[cvslog] [CVS] Module eggdrop1.8: Change committed

cvs at eggheads.org cvs at eggheads.org
Wed Nov 10 07:39:29 CST 2010


CVSROOT    : /usr/local/cvsroot
Module     : eggdrop1.8
Branch tags: gettext
Commit time: 2010-11-10 13:39:29 UTC
Committer  : Rumen Stoyanov <pseudo at egg6.net>

Modified files:
  Tag: gettext
     doc/Changes1.8 src/botcmd.c src/botmsg.c src/botnet.c
     src/chanprog.c src/cmds.c src/dcc.c src/dccutil.c src/dns.c
     src/flags.c src/main.c src/main.h src/misc.c src/patch.h
     src/tcldcc.c src/tclmisc.c

Log message:

Converted remaining lang #defines in the core to english strings from core.english.lang. Gettextified most of the hardcoded strings.

---------------------- diff included ----------------------
Index: eggdrop1.8/doc/Changes1.8
diff -u eggdrop1.8/doc/Changes1.8:1.36.2.2 eggdrop1.8/doc/Changes1.8:1.36.2.3
--- eggdrop1.8/doc/Changes1.8:1.36.2.2	Mon Nov  8 04:02:28 2010
+++ eggdrop1.8/doc/Changes1.8	Wed Nov 10 07:39:19 2010
@@ -1,4 +1,4 @@
-$Id: Changes1.8,v 1.36.2.2 2010/11/08 10:02:28 pseudo Exp $
+$Id: Changes1.8,v 1.36.2.3 2010/11/10 13:39:19 pseudo Exp $
 
 Eggdrop Changes (since version 1.8.0)
 
@@ -6,6 +6,10 @@
 
 1.8.0 (CVS):
 
+  - Converted remaining lang #defines in the core to english strings from
+    core.english.lang. Gettextified most of the hardcoded strings.
+    Patch by: pseudo
+
   - Replaced first part of language #defines with english strings from
     core.english.lang, marked for translation.
     Patch by: pseudo
Index: eggdrop1.8/src/botcmd.c
diff -u eggdrop1.8/src/botcmd.c:1.2 eggdrop1.8/src/botcmd.c:1.2.2.1
--- eggdrop1.8/src/botcmd.c:1.2	Tue Oct 19 06:13:32 2010
+++ eggdrop1.8/src/botcmd.c	Wed Nov 10 07:39:19 2010
@@ -3,7 +3,7 @@
  *   commands that comes across the botnet
  *   userfile transfer and update commands from sharebots
  *
- * $Id: botcmd.c,v 1.2 2010/10/19 12:13:32 pseudo Exp $
+ * $Id: botcmd.c,v 1.2.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -89,13 +89,13 @@
 #ifndef NO_OLD_BOTNET
     if (b_numver(idx) < NEAT_BOTNET)
       dprintf(idx, "chat %s NOTICE: %s (%s != %s).\n",
-              botnetnick, NET_FAKEREJECT, item, extra);
+              botnetnick, _("Fake message rejected"), item, extra);
     else
 #endif
       dprintf(idx, "ct %s NOTICE: %s (%s != %s).\n",
-              botnetnick, NET_FAKEREJECT, item, extra);
-    putlog(LOG_BOTS, "*", "%s %s (%s != %s).", dcc[idx].nick, NET_FAKEREJECT,
-           item, extra);
+              botnetnick, _("Fake message rejected"), item, extra);
+    putlog(LOG_BOTS, "*", _("%s Fake message rejected (%s != %s)."),
+           dcc[idx].nick, item, extra);
     lastfake = now;
   }
 }
@@ -255,31 +255,33 @@
         switch (i) {
         case NOTE_ERROR:
           botnet_send_priv(idx, botnetnick, from, NULL,
-                           "%s %s.", BOT_NOSUCHUSER, to);
+                           _("No such user %s."), to);
           break;
         case NOTE_STORED:
-          botnet_send_priv(idx, botnetnick, from, NULL, "%s", BOT_NOTESTORED2);
+          botnet_send_priv(idx, botnetnick, from, NULL,
+                           _("Not online; note stored."));
           break;
         case NOTE_FULL:
-          botnet_send_priv(idx, botnetnick, from, NULL, "%s", BOT_NOTEBOXFULL);
+          botnet_send_priv(idx, botnetnick, from, NULL,
+                           _("Notebox is full, sorry."));
           break;
         case NOTE_AWAY:
           botnet_send_priv(idx, botnetnick, from, NULL,
-                           "%s %s", to, BOT_NOTEISAWAY);
+                           _("%s is away; note stored."), to); 
           break;
         case NOTE_FWD:
           botnet_send_priv(idx, botnetnick, from, NULL,
-                           "%s %s", "Not online; note forwarded to:", to);
+                           _("Not online; note forwarded to: %s"), to);
           break;
         case NOTE_REJECT:
           botnet_send_priv(idx, botnetnick, from, NULL,
-                           "%s %s", to, "rejected your note.");
+                           _("%s rejected your note."), to);
           break;
         case NOTE_TCL:
           break;                /* Do nothing */
         case NOTE_OK:
           botnet_send_priv(idx, botnetnick, from, NULL,
-                           "%s %s.", BOT_NOTESENTTO, to);
+                           _("Note sent to %s."), to);
           break;
         }
     }
@@ -297,10 +299,10 @@
 
   bots = bots_in_subtree(findbot(dcc[idx].nick));
   users = users_in_subtree(findbot(dcc[idx].nick));
-  simple_sprintf(s, "%s %s. %s (lost %d bot%s and %d user%s)",
-                 BOT_DISCONNECTED, dcc[idx].nick, par[0] ?
-                 par : "No reason", bots, (bots != 1) ?
-                 "s" : "", users, (users != 1) ? "s" : "");
+  simple_sprintf(s, _("Disconnected from: %s. %s (lost %d %s and %d %s)"),
+                 dcc[idx].nick, par[0] ? par : "No reason",
+                 bots, P_("bot", "bots", bots), 
+                 users, P_("user", "users", users));
   putlog(LOG_BOTS, "*", "%s", s);
   chatout("*** %s\n", s);
   botnet_send_unlinked(idx, dcc[idx].nick, s);
@@ -321,7 +323,7 @@
   else
     realnick = nick;
   putlog(LOG_BOTS, "*", "#%s# who", realnick);
-  strcpy(s, "Channels: ");
+  strcpy(s, _("Channels: "));
   for (c = chanset; c; c = c->next)
     if (!channel_secret(c) && !channel_inactive(c)) {
       l = strlen(c->dname);
@@ -337,25 +339,25 @@
   if (i > 10) {
     botnet_send_priv(idx, botnetnick, nick, NULL, "%s (%s)", s, ver);
   } else
-    botnet_send_priv(idx, botnetnick, nick, NULL, "%s (%s)", BOT_NOCHANNELS,
-                     ver);
+    botnet_send_priv(idx, botnetnick, nick, NULL, _("no channels (%s)"), ver);
   if (admin[0])
-    botnet_send_priv(idx, botnetnick, nick, NULL, "Admin: %s", admin);
+    botnet_send_priv(idx, botnetnick, nick, NULL, _("Admin: %s"), admin);
   if (chan == 0)
-    botnet_send_priv(idx, botnetnick, nick, NULL, "%s (* = owner, + = master,"
-                     " %% = botmaster, @ = op, ^ = halfop)", BOT_PARTYMEMBS);
+    botnet_send_priv(idx, botnetnick, nick, NULL, _("Party line members: "
+                     "(* = owner, + = master, %% = botmaster, "
+                     "@ = op, ^ = halfop)"));
   else {
     simple_sprintf(s, "assoc %d", chan);
     if ((Tcl_Eval(interp, s) != TCL_OK) || tcl_resultempty())
-      botnet_send_priv(idx, botnetnick, nick, NULL, "%s %s%d: (* = owner, + ="
-                       " master, %% = botmaster, @ = op, ^ = halfop)\n",
-                       BOT_PEOPLEONCHAN, (chan < GLOBAL_CHANS) ? "" : "*",
+      botnet_send_priv(idx, botnetnick, nick, NULL, _("People on channel %s%d: "
+                       "(* = owner, + = master, %% = botmaster, @ = op, "
+                       "^ = halfop)\n"), (chan < GLOBAL_CHANS) ? "" : "*",
                        chan % GLOBAL_CHANS);
     else
-      botnet_send_priv(idx, botnetnick, nick, NULL, "%s '%s' (%s%d): (* = "
-                       "owner, + = master, %% = botmaster, @ = op, ^ = halfop)\n",
-                       BOT_PEOPLEONCHAN, tcl_resultstring(), (chan < GLOBAL_CHANS) ?
-                       "" : "*", chan % GLOBAL_CHANS);
+      botnet_send_priv(idx, botnetnick, nick, NULL, _("People on channel '%s' "
+                       "(%s%d): (* = owner, + = master, %% = botmaster, "
+                       "@ = op, ^ = halfop)\n"), tcl_resultstring(),
+                       (chan < GLOBAL_CHANS) ? "" : "*", chan % GLOBAL_CHANS);
   }
   for (i = 0; i < dcc_total; i++)
     if (dcc[i].type->flags & DCT_REMOTEWHO)
@@ -369,22 +371,22 @@
           hrs = ((now - dcc[i].timeval) - (days * 86400)) / 3600;
           mins = ((now - dcc[i].timeval) - (hrs * 3600)) / 60;
           if (days > 0)
-            sprintf(s + k, " (%s %lud%luh)", MISC_IDLE, days, hrs);
+            sprintf(s + k, _(" (idle %lud%luh)"), days, hrs);
           else if (hrs > 0)
-            sprintf(s + k, " (%s %luh%lum)", MISC_IDLE, hrs, mins);
+            sprintf(s + k, _(" (idle %luh%lum)"), hrs, mins);
           else
-            sprintf(s + k, " (%s %lum)", MISC_IDLE, mins);
+            sprintf(s + k, _(" (idle %lum)"), mins);
         }
         botnet_send_priv(idx, botnetnick, nick, NULL, "%s", s);
         if (dcc[i].u.chat->away != NULL)
-          botnet_send_priv(idx, botnetnick, nick, NULL, "      %s: %s",
-                           MISC_AWAY, dcc[i].u.chat->away);
+          botnet_send_priv(idx, botnetnick, nick, NULL, _("      AWAY: %s"),
+                           dcc[i].u.chat->away);
       }
   for (i = 0; i < dcc_total; i++)
     if (dcc[i].type == &DCC_BOT) {
       if (!ok) {
         ok = 1;
-        botnet_send_priv(idx, botnetnick, nick, NULL, "%s:", BOT_BOTSCONNECTED);
+        botnet_send_priv(idx, botnetnick, nick, NULL, _("Bots connected:"));
       }
       sprintf(s, "  %s%c%-15s %s",
               dcc[i].status & STAT_CALLED ? "<-" : "->",
@@ -398,21 +400,22 @@
       if (dcc[i].u.chat->channel != chan) {
         if (!ok) {
           ok = 1;
-          botnet_send_priv(idx, botnetnick, nick, NULL, "%s:", BOT_OTHERPEOPLE);
+          botnet_send_priv(idx, botnetnick, nick, NULL,
+                           _("Other people on the bot:"));
         }
         l = sprintf(s, "  %c%-15s %s", (geticon(i) == '-' ? ' ' : geticon(i)),
                     dcc[i].nick, dcc[i].host);
         if (now - dcc[i].timeval > 300) {
           k = (now - dcc[i].timeval) / 60;
           if (k < 60)
-            sprintf(s + l, " (%s %dm)", MISC_IDLE, k);
+            sprintf(s + l, _(" (idle %dm)"), k);
           else
-            sprintf(s + l, " (%s %dh%dm)", MISC_IDLE, k / 60, k % 60);
+            sprintf(s + l, _(" (idle %dh%dm)"), k / 60, k % 60);
         }
         botnet_send_priv(idx, botnetnick, nick, NULL, "%s", s);
         if (dcc[i].u.chat->away != NULL)
           botnet_send_priv(idx, botnetnick, nick, NULL,
-                           "      %s: %s", MISC_AWAY, dcc[i].u.chat->away);
+                           _("      AWAY: %s"), dcc[i].u.chat->away);
       }
 }
 
@@ -474,10 +477,7 @@
     int days = now2 / 86400;
 
     /* Days */
-    sprintf(s2, "%d day", days);
-    if (days >= 2)
-      strcat(s2, "s");
-    strcat(s2, ", ");
+    sprintf(s2, "%d %s,", days, P_("day", "days", days));
     now2 -= days * 86400;
   }
   hr = (time_t) ((int) now2 / 3600);
@@ -500,13 +500,13 @@
     if (s[0]) {
       s[strlen(s) - 2] = 0;
       botnet_send_priv(idx, botnetnick, par, NULL,
-                       "%s <%s> (%s) [UP %s]", ver, network, s, s2);
+                       _("%s <%s> (%s) [UP %s]"), ver, network, s, s2);
     } else
-      botnet_send_priv(idx, botnetnick, par, NULL, "%s <%s> (%s) [UP %s]", ver,
-                       network, BOT_NOCHANNELS, s2);
+      botnet_send_priv(idx, botnetnick, par, NULL, _("%s <%s> (no channels) "
+                      "[UP %s]"), ver, network, s2);
   } else
     botnet_send_priv(idx, botnetnick, par, NULL,
-                     "%s <NO_IRC> [UP %s]", ver, s2);
+                     _("%s <NO_IRC> [UP %s]"), ver, s2);
   botnet_send_infoq(idx, par);
 }
 
@@ -537,10 +537,10 @@
       rfrom = from;
     putlog(LOG_CMDS, "*", "#%s# link %s", rfrom, par);
     if (botlink(from, -1, par))
-      botnet_send_priv(idx, botnetnick, from, NULL, "%s %s ...",
-                       BOT_LINKATTEMPT, par);
+      botnet_send_priv(idx, botnetnick, from, NULL,
+                       _("Attempting to link %s ..."), par);
     else
-      botnet_send_priv(idx, botnetnick, from, NULL, "%s.", BOT_CANTLINKTHERE);
+      botnet_send_priv(idx, botnetnick, from, NULL, _("Can't link there."));
   } else {
     i = nextbot(bot);
     if (i >= 0)
@@ -587,7 +587,7 @@
         i = nextbot(p + 1);
         if (i >= 0)
           botnet_send_priv(i, botnetnick, from, NULL,
-                           "%s %s.", BOT_CANTUNLINK, undes);
+                           _("Can't unlink %s."), undes);
       }
     } else {
       p = strchr(from, '@');
@@ -595,7 +595,7 @@
         i = nextbot(p + 1);
         if (i >= 0)
           botnet_send_priv(i, botnetnick, from, NULL,
-                           "Can't remotely unlink sharebots.");
+                           _("Can't remotely unlink sharebots."));
       }
     }
   } else {
@@ -638,17 +638,16 @@
   next = newsplit(&par);
   s[0] = 0;
   if (!next[0]) {
-    putlog(LOG_BOTS, "*", "Invalid eggnet protocol from %s (zapfing)",
+    putlog(LOG_BOTS, "*", _("Invalid eggnet protocol from %s (zapfing)"),
            dcc[idx].nick);
-    simple_sprintf(s, "%s %s (%s)", MISC_DISCONNECTED, dcc[idx].nick,
-                   MISC_INVALIDBOT);
+    simple_sprintf(s, _("Disconnected %s (invalid bot)"), dcc[idx].nick);
     dprintf(idx, "error invalid eggnet protocol for 'nlinked'\n");
   } else if ((in_chain(newbot)) || (!egg_strcasecmp(newbot, botnetnick))) {
     /* Loop! */
-    putlog(LOG_BOTS, "*", "%s %s (mutual: %s)",
-           BOT_LOOPDETECT, dcc[idx].nick, newbot);
-    simple_sprintf(s, "%s %s: disconnecting %s", MISC_LOOP, newbot,
-                   dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Loop detected %s (mutual: %s)"),
+           dcc[idx].nick, newbot);
+    simple_sprintf(s, _("Detected loop: two bots exist named %s: "
+                   "disconnecting %s"), newbot, dcc[idx].nick);
     dprintf(idx, "error Loop (%s)\n", newbot);
   }
   if (!s[0]) {
@@ -660,23 +659,24 @@
       bogus = 1;
   }
   if (bogus) {
-    putlog(LOG_BOTS, "*", "%s %s!  (%s -> %s)", BOT_BOGUSLINK, dcc[idx].nick,
-           next, newbot);
-    simple_sprintf(s, "%s: %s %s", BOT_BOGUSLINK, dcc[idx].nick,
-                   MISC_DISCONNECTED);
-    dprintf(idx, "error %s (%s -> %s)\n", BOT_BOGUSLINK, next, newbot);
+    putlog(LOG_BOTS, "*", _("Bogus link notice from %s!  (%s -> %s)"),
+           dcc[idx].nick, next, newbot);
+    simple_sprintf(s, _("Bogus link notice from: %s. Disconnected"),
+                   dcc[idx].nick);
+    dprintf(idx, "error %s (%s -> %s)\n", _("Bogus link notice from"),
+            next, newbot);
   }
   if (bot_flags(dcc[idx].user) & BOT_LEAF) {
-    putlog(LOG_BOTS, "*", "%s %s  (%s %s)",
-           BOT_DISCONNLEAF, dcc[idx].nick, newbot, BOT_LINKEDTO);
-    simple_sprintf(s, "%s %s (to %s): %s",
-                   BOT_ILLEGALLINK, dcc[idx].nick, newbot, MISC_DISCONNECTED);
-    dprintf(idx, "error %s\n", BOT_YOUREALEAF);
+    putlog(LOG_BOTS, "*", _("Disconnected left %s  (Linked to %s)"),
+           dcc[idx].nick, newbot);
+    simple_sprintf(s, _("Illegal link by leaf %s (to %s): Disconnected"),
+                   dcc[idx].nick, newbot);
+    dprintf(idx, "error %s\n", _("You are supposed to be a leaf!"));
   }
   if (s[0]) {
     chatout("*** %s\n", s);
     botnet_send_unlinked(idx, dcc[idx].nick, s);
-    dprintf(idx, "bye %s\n", BOT_ILLEGALLINK);
+    dprintf(idx, "bye %s\n", _("Illegal link by leaf"));
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -694,7 +694,7 @@
     i = base64_to_int(par);
   botnet_send_nlinked(idx, newbot, next, x, i);
   if (x == '!') {
-    chatout("*** (%s) %s %s.\n", next, NET_LINKEDTO, newbot);
+    chatout(_("*** (%s) Linked to %s.\n"), next, newbot);
     x = '-';
   }
   addbot(newbot, dcc[idx].nick, next, x, i);
@@ -702,8 +702,8 @@
   u = get_user_by_handle(userlist, newbot);
   if (bot_flags(u) & BOT_REJECT) {
     botnet_send_reject(idx, botnetnick, NULL, newbot, NULL, NULL);
-    putlog(LOG_BOTS, "*", "%s %s %s %s", BOT_REJECTING,
-           newbot, MISC_FROM, dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Rejecting bot %s from %s"), newbot,
+           dcc[idx].nick);
   }
 }
 
@@ -715,10 +715,10 @@
 
   bots = bots_in_subtree(findbot(dcc[idx].nick));
   users = users_in_subtree(findbot(dcc[idx].nick));
-  putlog(LOG_BOTS, "*", "%s", BOT_OLDBOT);
-  simple_sprintf(s, "%s %s (%s) (lost %d bot%s and %d user%s",
-                 MISC_DISCONNECTED, dcc[idx].nick, MISC_OUTDATED,
-                 bots, (bots != 1) ? "s" : "", users, (users != 1) ? "s" : "");
+  putlog(LOG_BOTS, "*", _("Older bot detected (unsupported)"));
+  simple_sprintf(s, _("Disconnected %s (outdated) (lost %d %s and %d %s"),
+                 dcc[idx].nick, bots, P_("bot", "bots", bots),
+                 users, P_("user", "users", users));
   chatout("*** %s\n", s);
   botnet_send_unlinked(idx, dcc[idx].nick, s);
   killsock(dcc[idx].sock);
@@ -807,10 +807,10 @@
               if (*c == ':')
                 j++;
           }
-          dprintf(i, "%s -> %s (%lu secs, %d hop%s)\n", BOT_TRACERESULT, p,
-                  now - t, j, (j != 1) ? "s" : "");
+          dprintf(i, _("Trace result -> %s (%lu secs, %d %s)\n"), p, now - t,
+                  P_("sec", "secs", now - t), j, P_("hop", "hops", j));
         } else
-          dprintf(i, "%s -> %s\n", BOT_TRACERESULT, p);
+          dprintf(i, _("Trace result -> %s\n"), p);
       }
   } else {
     i = nextbot(p);
@@ -847,17 +847,20 @@
     /* Rejecting a bot */
     i = nextbot(who);
     if (i < 0) {
-      botnet_send_priv(idx, botnetnick, from, NULL, "%s %s (%s)",
-                       BOT_CANTUNLINK, who, BOT_DOESNTEXIST);
+      botnet_send_priv(idx, botnetnick, from, NULL,
+                       _("Can't unlink %s (doesn't exist)"), who);
     } else if (!egg_strcasecmp(dcc[i].nick, who)) {
       char s[1024];
 
       /* I'm the connection to the rejected bot */
-      putlog(LOG_BOTS, "*", "%s %s %s", from, MISC_REJECTED, dcc[i].nick);
-      dprintf(i, "bye %s\n", par[0] ? par : MISC_REJECTED);
-      simple_sprintf(s, "%s %s (%s: %s)",
-                     MISC_DISCONNECTED, dcc[i].nick, from,
-                     par[0] ? par : MISC_REJECTED);
+      putlog(LOG_BOTS, "*", _("%s rejected %s"), from, dcc[i].nick);
+      dprintf(i, "bye %s\n", par[0] ? par : "rejected");
+      if (par[0])
+        simple_sprintf(s, _("Disconnected %s (%s: %s)"), dcc[i].nick,
+                       from, par);
+      else
+        simple_sprintf(s, _("Disconnected %s (%s: rejected)"),
+                       dcc[i].nick, from);
       chatout("*** %s\n", s);
       botnet_send_unlinked(i, dcc[i].nick, s);
       killsock(dcc[i].sock);
@@ -880,11 +883,12 @@
           frombot++;
         u = get_user_by_handle(userlist, frombot);
         if (!(bot_flags(u) & BOT_SHARE)) {
-          add_note(from, botnetnick, "No non sharebot boots.", -1, 0);
+          add_note(from, botnetnick, _("No non sharebot boots."), -1, 0);
           ok = 1;
         }
       } else if (remote_boots == 0) {
-        botnet_send_priv(idx, botnetnick, from, NULL, "%s", BOT_NOREMOTEBOOT);
+        botnet_send_priv(idx, botnetnick, from, NULL,
+                         _("Remote boots are not allowed."));
         ok = 1;
       }
       for (i = 0; (i < dcc_total) && (!ok); i++)
@@ -892,13 +896,13 @@
             (dcc[i].type->flags & DCT_CHAT)) {
           u = get_user_by_handle(userlist, dcc[i].nick);
           if (u && (u->flags & USER_OWNER)) {
-            add_note(from, botnetnick, BOT_NOOWNERBOOT, -1, 0);
+            add_note(from, botnetnick, _("Can't boot the bot owner."), -1, 0);
             return;
           }
           do_boot(i, from, par);
           ok = 1;
           putlog(LOG_CMDS, "*", "#%s# boot %s (%s)", from, who,
-                 par[0] ? par : "No reason");
+                 par[0] ? par : _("No reason"));
         }
     } else {
       i = nextbot(destbot);
@@ -914,10 +918,9 @@
   if (egg_strcasecmp(par, dcc[idx].nick)) {
     char s[1024];
 
-    putlog(LOG_BOTS, "*", NET_WRONGBOT, dcc[idx].nick, par);
-    dprintf(idx, "bye %s\n", MISC_IMPOSTER);
-    simple_sprintf(s, "%s %s (%s)", MISC_DISCONNECTED, dcc[idx].nick,
-                   MISC_IMPOSTER);
+    putlog(LOG_BOTS, "*", _("Wrong bot--wanted %s,  got %s"), dcc[idx].nick, par);
+    dprintf(idx, "bye %s\n", _("imposter"));
+    simple_sprintf(s, _("Disconnected %s (imposter)"), dcc[idx].nick);
     chatout("*** %s\n", s);
     botnet_send_unlinked(idx, dcc[idx].nick, s);
     unvia(idx, findbot(dcc[idx].nick));
@@ -1023,7 +1026,7 @@
     putlog(LOG_CMDS, "*", "#%s# motd", p);
     vv = fopen(motdfile, "r");
     if (vv != NULL) {
-      botnet_send_priv(idx, botnetnick, who, NULL, "--- %s\n", MISC_MOTDFILE);
+      botnet_send_priv(idx, botnetnick, who, NULL, _("--- MOTD file:\n"));
       help_subst(NULL, NULL, 0, irc, NULL);
       while (!feof(vv)) {
         fgets(s, 120, vv);
@@ -1039,7 +1042,7 @@
       }
       fclose(vv);
     } else
-      botnet_send_priv(idx, botnetnick, who, NULL, "%s :(", MISC_NOMOTDFILE);
+      botnet_send_priv(idx, botnetnick, who, NULL, _("No MOTD file. :("));
   } else {
     /* Pass it on */
     i = nextbot(par);
@@ -1070,12 +1073,12 @@
       *p = 0;
       for (i = 0; i < dcc_total; i++) {
         if (dcc[i].sock == atoi(to))
-          dprintf(i, "%s (%s): %s\n", BOT_XFERREJECTED, path, par);
+          dprintf(i, _("FILE TRANSFER REJECTED (%s): %s\n"), path, par);
       }
       *p = ':';
     }
     /* No ':'? malformed */
-    putlog(LOG_FILES, "*", "%s %s: %s", path, MISC_REJECTED, par);
+    putlog(LOG_FILES, "*", _("%s rejected: %s"), path, par);
   } else {                        /* Pass it on */
     i = nextbot(tobot);
     if (i >= 0)
@@ -1099,7 +1102,7 @@
       module_entry *fs = module_find("filesys", 0, 0);
 
       if (fs == NULL)
-        botnet_send_priv(idx, botnetnick, from, NULL, MOD_NOFILESYSMOD);
+        botnet_send_priv(idx, botnetnick, from, NULL, _("Filesys module not loaded."));
       else {
         Function f = fs->funcs[FILESYS_REMOTE_REQ];
 
@@ -1187,7 +1190,7 @@
     fake_alert(idx, "sock#", ssock);
     return;
   }
-  chanout_but(-1, party[i].chan, "*** (%s) Nick change: %s -> %s\n",
+  chanout_but(-1, party[i].chan, _("*** (%s) Nick change: %s -> %s\n"),
               bot, newnick, party[i].nick);
   botnet_send_nkch_part(idx, i, newnick);
 }
@@ -1259,14 +1262,22 @@
   botnet_send_join_party(idx, linking, i2, i);
   if (i != chan) {
     if (i >= 0) {
-      if (b_numver(idx) >= NEAT_BOTNET)
-        chanout_but(-1, i, "*** (%s) %s %s %s.\n", bot, nick, NET_LEFTTHE,
-                    i ? "channel" : "party line");
+      if (b_numver(idx) >= NEAT_BOTNET) {
+        if (i)
+          chanout_but(-1, i, _("*** (%s) %s has left the channel"));
+        else
+          chanout_but(-1, i, _("*** (%s) %s has left the party line"));
+      }
       check_tcl_chpt(bot, nick, sock, i);
     }
-    if ((b_numver(idx) >= NEAT_BOTNET) && !linking)
-      chanout_but(-1, chan, "*** (%s) %s %s %s.\n", bot, nick, NET_JOINEDTHE,
-                  chan ? "channel" : "party line");
+    if ((b_numver(idx) >= NEAT_BOTNET) && !linking) {
+        if (chan)
+          chanout_but(-1, chan, _("*** (%s) %s has joined the channel.\n"),
+                      bot, nick);
+        else
+          chanout_but(-1, chan, _("*** (%s) %s has joined the party line.\n"),
+                      bot, nick);
+    }
     check_tcl_chjn(bot, nick, chan, y[0], sock, par);
   }
 }
@@ -1309,12 +1320,14 @@
     if ((b_numver(idx) >= NEAT_BOTNET) && !silent) {
       register int chan = party[partyidx].chan;
 
-      if (par[0])
-        chanout_but(-1, chan, "*** (%s) %s %s %s (%s).\n", bot, nick,
-                    NET_LEFTTHE, chan ? "channel" : "party line", par);
-      else
-        chanout_but(-1, chan, "*** (%s) %s %s %s.\n", bot, nick,
-                    NET_LEFTTHE, chan ? "channel" : "party line");
+      if (par[0]) {
+        if (chan)
+          chanout_but(-1, chan, _("*** (%s) %s has left the channel (%s).\n"),
+                      bot, nick, par);
+        else
+          chanout_but(-1, chan, _("*** (%s) %s has left the partyline (%s).\n"),
+                      bot, nick, par);
+      }
     }
     botnet_send_part_party(idx, partyidx, par, silent);
     remparty(bot, sock);
@@ -1361,11 +1374,12 @@
   if ((b_numver(idx) >= NEAT_BOTNET) && !linking) {
     if (par[0])
       chanout_but(-1, party[partyidx].chan,
-                  "*** (%s) %s %s: %s.\n", bot,
-                  party[partyidx].nick, NET_AWAY, par);
+                  _("*** (%s) %s is now away: %s.\n"), bot,
+                  party[partyidx].nick, par);
     else
       chanout_but(-1, party[partyidx].chan,
-                  "*** (%s) %s %s.\n", bot, party[partyidx].nick, NET_UNAWAY);
+                  _("*** (%s) %s is no longer away.\n"), bot,
+                  party[partyidx].nick);
   }
   botnet_send_away(idx, bot, sock, par, linking);
 }
@@ -1409,7 +1423,7 @@
 
 static void bot_ufno(int idx, char *par)
 {
-  putlog(LOG_BOTS, "*", "%s %s: %s", USERF_REJECTED, dcc[idx].nick, par);
+  putlog(LOG_BOTS, "*", _("User file rejected by %s: %s"), dcc[idx].nick, par);
   dcc[idx].status &= ~STAT_OFFERED;
   if (!(dcc[idx].status & STAT_GETTING))
     dcc[idx].status &= ~STAT_SHARE;
@@ -1417,8 +1431,8 @@
 
 static void bot_old_userfile(int idx, char *par)
 {
-  putlog(LOG_BOTS, "*", "%s %s", USERF_OLDSHARE, dcc[idx].nick);
-  dprintf(idx, "uf-no %s\n", USERF_ANTIQUESHARE);
+  putlog(LOG_BOTS, "*", _("Old style share request by %s"), dcc[idx].nick);
+  dprintf(idx, "uf-no %s\n", _("Antiquated sharing request"));
 }
 
 #endif /* !NO_OLD_BOTNET */
@@ -1442,12 +1456,13 @@
       dprintf(sock, "v %s %s %s\n", frombot, tobot, par);
   } else {
     from = newsplit(&par);
-    botnet_send_priv(sock, botnetnick, from, frombot, "Modules loaded:\n");
+    botnet_send_priv(sock, botnetnick, from, frombot, _("Modules loaded:\n"));
     for (me = module_list; me; me = me->next)
       botnet_send_priv(sock, botnetnick, from, frombot,
-                       "  Module: %s (v%d.%d)\n", me->name, me->major,
+                       _("  Module: %s (v%d.%d)\n"), me->name, me->major,
                        me->minor);
-    botnet_send_priv(sock, botnetnick, from, frombot, "End of module list.\n");
+    botnet_send_priv(sock, botnetnick, from, frombot,
+                     _("End of module list.\n"));
   }
 }
 
@@ -1475,7 +1490,8 @@
     }
     */
     dprintf(idx, "starttls\n");
-    putlog(LOG_BOTS, "*", "Got STARTTLS from %s. Replying...", dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Got STARTTLS from %s. Replying..."),
+           dcc[idx].nick);
     ssl_handshake(dcc[idx].sock, TLS_LISTEN, tls_vfybots, LOG_BOTS,
                   dcc[idx].host, NULL);
   }
Index: eggdrop1.8/src/botmsg.c
diff -u eggdrop1.8/src/botmsg.c:1.1.1.1 eggdrop1.8/src/botmsg.c:1.1.1.1.2.1
--- eggdrop1.8/src/botmsg.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/botmsg.c	Wed Nov 10 07:39:19 2010
@@ -5,7 +5,7 @@
  *
  * by Darrin Smith (beldin at light.iinet.net.au)
  *
- * $Id: botmsg.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: botmsg.c,v 1.1.1.1.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -398,7 +398,7 @@
 #ifndef NO_OLD_BOTNET
     if (flag == '!') {
       flag = '-';
-      tandout_but(idx, "chat %s %s %s\n", next, NET_LINKEDTO, bot);
+      tandout_but(idx, "chat %s %s %s\n", next, _("Linked to"), bot);
     }
     tandout_but(idx, "nlinked %s %s %c%d\n", bot, next, flag, vernum);
 #endif
@@ -585,20 +585,20 @@
         if (partyidx >= 0)
           tandout_but(idx, "chan %s %d %s %s: %s.\n", bot,
                       party[partyidx].chan, party[partyidx].nick,
-                      NET_AWAY, msg);
+                      _("is now away"), msg);
       }
       tandout_but(idx, "away %s %d %s\n", bot, sock, msg);
     } else {
       if (idx < 0) {
         tandout_but(idx, "chan %s %d %s %s.\n", bot,
                     dcc[linking].u.chat->channel, dcc[linking].nick,
-                    NET_UNAWAY);
+                    _("is no longer away"));
       } else if (b_numver(idx) >= NEAT_BOTNET) {
         int partyidx = getparty(bot, sock);
 
         if (partyidx >= 0)
           tandout_but(idx, "chan %s %d %s %s.\n", bot,
-                      party[partyidx].chan, party[partyidx].nick, NET_UNAWAY);
+                      party[partyidx].chan, party[partyidx].nick, _("is no longer away"));
       }
       tandout_but(idx, "unaway %s %d\n", bot, sock);
     }
@@ -622,13 +622,12 @@
                 geticon(useridx), dcc[useridx].sock, dcc[useridx].host);
     tandout_but(-1, "chan %s %d %s %s %s.\n",
                 botnetnick, dcc[useridx].u.chat->channel,
-                dcc[useridx].nick, NET_JOINEDTHE,
+                dcc[useridx].nick, _("has joined the"),
                 dcc[useridx].u.chat->channel ? "channel" : "party line");
     if ((oldchan >= 0) && (oldchan < GLOBAL_CHANS)) {
-      tandout_but(-1, "chan %s %d %s %s %s.\n",
-                  botnetnick, oldchan,
-                  dcc[useridx].nick, NET_LEFTTHE,
-                  oldchan ? "channel" : "party line");
+      tandout_but(-1, "chan %s %d %s %s.\n", botnetnick, oldchan,
+                  dcc[useridx].nick, oldchan ? _("has left the channel)") :
+                  _("has left the party line"));
     }
 #endif
   }
@@ -651,16 +650,16 @@
                 party[useridx].flag, party[useridx].sock,
                 party[useridx].from ? party[useridx].from : "");
     if ((idx < 0) || (!linking && (b_numver(idx) >= NEAT_BOTNET))) {
-      tandout_but(idx, "chan %s %d %s %s %s.\n",
-                  party[useridx].bot, party[useridx].chan,
-                  party[useridx].nick, NET_JOINEDTHE,
-                  party[useridx].chan ? "channel" : "party line");
+      tandout_but(idx, "chan %s %d %s %s.\n", party[useridx].bot,
+                  party[useridx].chan, party[useridx].nick,
+                  party[useridx].chan ? _("has joined the channel") :
+                  _("has joined the party line"));
     }
     if ((oldchan >= 0) && (oldchan < GLOBAL_CHANS) &&
         ((idx < 0) || (b_numver(idx) >= NEAT_BOTNET))) {
-      tandout_but(idx, "chan %s %d %s %s %s.\n",
-                  party[useridx].bot, oldchan, party[useridx].nick,
-                  NET_LEFTTHE, party[useridx].chan ? "channel" : "party line");
+      tandout_but(idx, "chan %s %d %s %s.\n", party[useridx].bot, oldchan,
+                  party[useridx].nick, party[useridx].chan ?
+                  _("has left the channel") : _("has left the party line"));
     }
 #endif
   }
@@ -726,7 +725,7 @@
                 geticon(useridx), dcc[useridx].sock, dcc[useridx].host);
     tandout_but(-1, "chan %s %d %s: %s -> %s.\n",
                 botnetnick, dcc[useridx].u.chat->channel,
-                oldnick, NET_NICKCHANGE, dcc[useridx].nick);
+                oldnick, _("Nick Change:"), dcc[useridx].nick);
 #endif
   }
 }
@@ -748,7 +747,7 @@
                 party[useridx].from ? party[useridx].from : "");
     tandout_but(butidx, "chan %s %d %s : %s -> %s.\n",
                 party[useridx].bot, party[useridx].chan,
-                NET_NICKCHANGE, oldnick, party[useridx].nick);
+                _("Nick Change:"), oldnick, party[useridx].nick);
 #endif
   }
 }
@@ -799,7 +798,7 @@
     i = nextbot(p);
     if (i < 0) {
       if (idx >= 0)
-        dprintf(idx, BOT_NOTHERE);
+        dprintf(idx, _("That bot isn't here.\n"));
 
       return NOTE_ERROR;
     }
@@ -840,7 +839,7 @@
   u = get_user_by_handle(userlist, to);
   if (!u) {
     if (idx >= 0)
-      dprintf(idx, USERF_UNKNOWN);
+      dprintf(idx, _("I don't know anyone by that name.\n"));
 
     return NOTE_ERROR;
   }
@@ -848,7 +847,7 @@
   /* Is the note to a bot? */
   if (is_bot(u)) {
     if (idx >= 0)
-      dprintf(idx, BOT_NONOTES);
+      dprintf(idx, _("That's a bot.  You can't leave notes for a bot.\n"));
 
     return NOTE_ERROR;
   }
@@ -856,7 +855,7 @@
   /* Is user rejecting notes from this source? */
   if (match_noterej(u, from)) {
     if (idx >= 0)
-      dprintf(idx, "%s rejected your note.\n", u->handle);
+      dprintf(idx, _("%s rejected your note.\n"), u->handle);
 
     return NOTE_REJECT;
   }
@@ -878,7 +877,7 @@
           aok = 0;
 
           if (idx >= 0)
-            dprintf(idx, "%s %s: %s\n", dcc[i].nick, BOT_USERAWAY,
+            dprintf(idx, _("%s is away: %s\n"), dcc[i].nick,
                     dcc[i].u.chat->away);
 
           if (!iaway)
@@ -903,7 +902,7 @@
         if (idx == -2 || !egg_strcasecmp(from, botnetnick))
           dprintf(i, "*** [%s] %s%s\n", fr, l ? work : "", msg);
         else
-          dprintf(i, "%cNote [%s]: %s%s\n", 7, fr, l ? work : "", msg);
+          dprintf(i, _("%cNote [%s]: %s%s\n"), 7, fr, l ? work : "", msg);
 
         if (idx >= 0 && echo)
           dprintf(idx, "-> %s: %s\n", to, msg);
@@ -932,7 +931,7 @@
      * message arrived and was stored (only oldest session is notified).
      */
     if (status == NOTE_AWAY)
-      dprintf(iaway, "*** %s.\n", BOT_NOTEARRIVED);
+      dprintf(iaway, _("*** Note arrived for you.\n"));
 
     return status;
   }
Index: eggdrop1.8/src/botnet.c
diff -u eggdrop1.8/src/botnet.c:1.4 eggdrop1.8/src/botnet.c:1.4.2.1
--- eggdrop1.8/src/botnet.c:1.4	Mon Nov  1 16:38:34 2010
+++ eggdrop1.8/src/botnet.c	Wed Nov 10 07:39:19 2010
@@ -7,7 +7,7 @@
  *   linking, unlinking, and relaying to another bot
  *   pinging the bots periodically and checking leaf status
  *
- * $Id: botnet.c,v 1.4 2010/11/01 22:38:34 pseudo Exp $
+ * $Id: botnet.c,v 1.4.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -91,7 +91,7 @@
 
   while (*ptr) {
     if (!egg_strcasecmp((*ptr)->bot, who))
-      putlog(LOG_BOTS, "*", "!!! Duplicate botnet bot entry!!");
+      putlog(LOG_BOTS, "*", _("!!! Duplicate botnet bot entry!!"));
     ptr = &((*ptr)->next);
   }
   ptr2 = nmalloc(sizeof(tand_t));
@@ -435,15 +435,14 @@
   int i, t, nicklen, botnicklen, total = 0;
 
   if (chan == -1)
-    dprintf(idx, "%s (+: %s, *: %s)\n", BOT_BOTNETUSERS, BOT_PARTYLINE,
-            BOT_LOCALCHAN);
+    dprintf(idx, _("Users across the botnet (+: Party line, *: Local channel)\n"));
   else if (chan > 0) {
     simple_sprintf(idle, "assoc %d", chan);
     if ((Tcl_Eval(interp, idle) != TCL_OK) || tcl_resultempty())
-      dprintf(idx, "%s %s%d:\n", BOT_USERSONCHAN,
+      dprintf(idx, _("Users on channel %s%d:\n"),
               (chan < GLOBAL_CHANS) ? "" : "*", chan % GLOBAL_CHANS);
     else
-      dprintf(idx, "%s '%s%s' (%s%d):\n", BOT_USERSONCHAN,
+      dprintf(idx, _("Users on channel '%s%s' (%s%d):\n"),
               (chan < GLOBAL_CHANS) ? "" : "*", tcl_resultstring(),
               (chan < GLOBAL_CHANS) ? "" : "*", chan % GLOBAL_CHANS);
   }
@@ -536,11 +535,10 @@
               (party[i].chan == 0) && (chan == -1) ? '+' : ' ',
               party[i].bot, party[i].from, idle);
       if (party[i].status & PLSTAT_AWAY)
-        dprintf(idx, "   %s: %s\n", MISC_AWAY,
-                party[i].away ? party[i].away : "");
+        dprintf(idx, "   AWAY: %s\n", party[i].away ? party[i].away : "");
     }
   }
-  dprintf(idx, "Total users: %d\n", total);
+  dprintf(idx, _("Total users: %d\n"), total);
 }
 
 /* Show z a list of all bots connected
@@ -552,7 +550,7 @@
   tand_t *bot;
 
   if (!tands) {
-    dprintf(idx, "%s\n", BOT_NOBOTSLINKED);
+    dprintf(idx, _("No bots linked.\n"));
     return;
   }
   strcpy(s, botnetnick);
@@ -560,7 +558,7 @@
 
   for (bot = tandbot; bot; bot = bot->next) {
     if (i > (500 - HANDLEN)) {
-      dprintf(idx, "Bots: %s\n", s);
+      dprintf(idx, _("Bots: %s\n"), s);
       s[0] = 0;
       i = 0;
     }
@@ -572,8 +570,8 @@
     i += strlen(bot->bot);
   }
   if (s[0])
-    dprintf(idx, "Bots: %s\n", s);
-  dprintf(idx, "%s: %d\n", MISC_TOTAL, tands + 1);
+    dprintf(idx, _("Bots: %s\n"), s);
+  dprintf(idx, _("Total: %d\n"), tands + 1);
 }
 
 /* Show a simpleton bot tree
@@ -587,7 +585,7 @@
   int tothops = 0;
 
   if (tands == 0) {
-    dprintf(idx, "%s\n", BOT_NOBOTSLINKED);
+    dprintf(idx, _("No bots linked.\n"));
     return;
   }
   s[0] = 0;
@@ -603,7 +601,7 @@
       i += strlen(bot->bot);
     }
   if (s[0])
-    dprintf(idx, "(%s %s)\n", BOT_NOTRACEINFO, s);
+    dprintf(idx, _("(No trace info for: %s)\n"), s);
   if (showver)
     dprintf(idx, "%s (%d.%d.%d.%d)\n", botnetnick,
             egg_numver / 1000000,
@@ -615,7 +613,7 @@
   work[0] = 0;
   while (more) {
     if (lev == 20) {
-      dprintf(idx, "\n%s\n", BOT_COMPLEXTREE);
+      dprintf(idx, _("\nTree too complex!\n"));
       return;
     }
     cnt = 0;
@@ -726,7 +724,7 @@
     }
   }
   /* Hop information: (9d) */
-  dprintf(idx, "Average hops: %3.1f, total bots: %d\n",
+  dprintf(idx, _("Average hops: %3.1f, total bots: %d\n"),
           ((float) tothops) / ((float) tands), tands + 1);
 }
 
@@ -878,24 +876,24 @@
   tand_t *bot;
 
   if (nick[0] == '*')
-    dprintf(idx, "%s\n", BOT_UNLINKALL);
+    dprintf(idx, _("Unlinking all bots...\n"));
   for (i = 0; i < dcc_total; i++) {
     if ((nick[0] == '*') || !egg_strcasecmp(dcc[i].nick, nick)) {
       if (dcc[i].type == &DCC_FORK_BOT) {
         if (idx >= 0)
-          dprintf(idx, "%s: %s -> %s.\n", BOT_KILLLINKATTEMPT,
+          dprintf(idx, _("Killed link attempt to: %s -> %s.\n"),
                   dcc[i].nick, dcc[i].host);
-        putlog(LOG_BOTS, "*", "%s: %s -> %s:%d",
-               BOT_KILLLINKATTEMPT, dcc[i].nick, dcc[i].host, dcc[i].port);
+        putlog(LOG_BOTS, "*", _("Killed link attempt to: %s -> %s:%d"),
+               dcc[i].nick, dcc[i].host, dcc[i].port);
         killsock(dcc[i].sock);
         lostdcc(i);
         if (nick[0] != '*')
           return 1;
       } else if (dcc[i].type == &DCC_BOT_NEW) {
         if (idx >= 0)
-          dprintf(idx, "%s %s.\n", BOT_ENDLINKATTEMPT, dcc[i].nick);
-        putlog(LOG_BOTS, "*", "%s %s @ %s:%d",
-               "Stopped trying to link", dcc[i].nick, dcc[i].host, dcc[i].port);
+          dprintf(idx, _("No longer trying to link: %s.\n"), dcc[i].nick);
+        putlog(LOG_BOTS, "*", _("Stopped trying to link %s @ %s:%d"),
+               dcc[i].nick, dcc[i].host, dcc[i].port);
         killsock(dcc[i].sock);
         lostdcc(i);
         if (nick[0] != '*')
@@ -904,23 +902,21 @@
         char s[1024];
 
         if (idx >= 0)
-          dprintf(idx, "%s %s.\n", BOT_BREAKLINK, dcc[i].nick);
+          dprintf(idx, _("Breaking link with %s.\n"), dcc[i].nick);
         else if ((idx == -3) && (b_status(i) & STAT_SHARE) && !share_unlinks)
           return -1;
         bot = findbot(dcc[i].nick);
         bots = bots_in_subtree(bot);
         users = users_in_subtree(bot);
         if (reason && reason[0]) {
-          simple_sprintf(s, "%s %s (%s (%s)) (lost %d bot%s and %d user%s)",
-                         BOT_UNLINKEDFROM, dcc[i].nick, reason, from, bots,
-                         (bots != 1) ? "s" : "", users, (users != 1) ?
-                         "s" : "");
+          simple_sprintf(s, _("Unlinked from: %s (%s (%s)) (lost %d %s "
+                         "and %d %s)"), dcc[i].nick, reason, from, bots,
+                         P_("bot", "bots", bots), P_("user", "users", users));
           dprintf(i, "bye %s\n", reason);
         } else {
-          simple_sprintf(s, "%s %s (%s) (lost %d bot%s and %d user%s)",
-                         BOT_UNLINKEDFROM, dcc[i].nick, from, bots,
-                         (bots != 1) ? "s" : "", users,
-                         (users != 1) ? "s" : "");
+          simple_sprintf(s, _("Unlinked from: %s (%s) (lost %d %s and %d %s)"),
+                         dcc[i].nick, from, bots, P_("bot", "bots", bots),
+                         P_("user", "users", users));
           dprintf(i, "bye No reason\n");
         }
         chatout("*** %s\n", s);
@@ -933,7 +929,7 @@
     }
   }
   if (idx >= 0 && nick[0] != '*')
-    dprintf(idx, "%s\n", BOT_NOTCONNECTED);
+    dprintf(idx, _("Not connected to that bot.\n"));
   if (nick[0] != '*') {
     bot = findbot(nick);
     if (bot) {
@@ -956,7 +952,7 @@
     }
   }
   if (nick[0] == '*') {
-    dprintf(idx, "%s\n", BOT_WIPEBOTTABLE);
+    dprintf(idx, _("Smooshing bot tables and assocs...\n"));
     while (tandbot)
       rembot(tandbot->bot);
     while (parties) {
@@ -986,19 +982,19 @@
   u = get_user_by_handle(userlist, nick);
   if (!u || !(u->flags & USER_BOT)) {
     if (idx >= 0)
-      dprintf(idx, "%s %s\n", nick, BOT_BOTUNKNOWN);
+      dprintf(idx, _("%s is not a known bot.\n"), nick);
   } else if (!egg_strcasecmp(nick, botnetnick)) {
     if (idx >= 0)
-      dprintf(idx, "%s\n", BOT_CANTLINKMYSELF);
+      dprintf(idx, _("Link to myself? Oh boy, Freud would have a field day.\n"));
   } else if (in_chain(nick) && (idx != -3)) {
     if (idx >= 0)
-      dprintf(idx, "%s\n", BOT_ALREADYLINKED);
+      dprintf(idx, "%s\n", _("That bot is already connected up."));
   } else {
     for (i = 0; i < dcc_total; i++)
       if ((dcc[i].user == u) &&
           ((dcc[i].type == &DCC_FORK_BOT) || (dcc[i].type == &DCC_BOT_NEW))) {
         if (idx >= 0)
-          dprintf(idx, "%s\n", BOT_ALREADYLINKING);
+          dprintf(idx, "%s\n", _("Already linking to that bot."));
         return 0;
       }
     /* Address to connect to is in 'info' */
@@ -1006,30 +1002,19 @@
     if (!bi || !strlen(bi->address) || !bi->telnet_port ||
         (bi->telnet_port <= 0)) {
       if (idx >= 0) {
-        dprintf(idx, "%s '%s'.\n", BOT_NOTELNETADDY, nick);
-        dprintf(idx, "%s .chaddr %s %s\n",
-                MISC_USEFORMAT, nick, MISC_CHADDRFORMAT);
+        dprintf(idx, _("Invalid telnet address:port stored for '%s'.\n"), nick);
+        dprintf(idx, _("Use: .chaddr %s <address> <port#>[/<relay-port#>]\n"),
+                nick);
       }
     } else if (dcc_total == max_dcc && increase_socks_max()) {
       if (idx >= 0)
-        dprintf(idx, "%s\n", DCC_TOOMANYDCCS1);
+        dprintf(idx, _("Sorry, too many DCC connections.\n"));
     } else {
       correct_handle(nick);
 
       if (idx > -2)
-#ifdef IPV6
-      {
-        if (strchr(bi->address, ':'))
-          putlog(LOG_BOTS, "*", "%s %s at [%s]:%d ...", BOT_LINKING, nick,
-                 bi->address, bi->telnet_port);
-        else
-          putlog(LOG_BOTS, "*", "%s %s at %s:%d ...", BOT_LINKING, nick,
-                 bi->address, bi->telnet_port);
-      }
-#else
-        putlog(LOG_BOTS, "*", "%s %s at %s:%d ...", BOT_LINKING, nick,
+        putlog(LOG_BOTS, "*", _("Linking to %s at [%s]:%d ..."), nick,
                bi->address, bi->telnet_port);
-#endif
       i = new_dcc(&DCC_DNSWAIT, sizeof(struct dns_info));
       dcc[i].timeval = now;
       dcc[i].port = bi->telnet_port;
@@ -1059,7 +1044,7 @@
 {
   char s[81];
 
-  putlog(LOG_BOTS, "*", DCC_LINKFAIL, dcc[i].nick);
+  putlog(LOG_BOTS, "*", _("Failed link to %s."), dcc[i].nick);
   strcpy(s, dcc[i].nick);
   nfree(dcc[i].u.dns->cptr);
   lostdcc(i);
@@ -1099,7 +1084,7 @@
         (dcc[i].u.relay->sock == dcc[idx].sock))
       uidx = i;
   if (uidx < 0) {
-    putlog(LOG_MISC, "*", "%s  %d -> %d", BOT_CANTFINDRELAYUSER,
+    putlog(LOG_MISC, "*", _("Can't find user for relay!  %d -> %d"),
            dcc[idx].sock, dcc[idx].u.relay->sock);
     killsock(dcc[idx].sock);
     lostdcc(idx);
@@ -1108,7 +1093,7 @@
   if (dcc[idx].port >= dcc[idx].u.relay->port + 3) {
     struct chat_info *ci = dcc[uidx].u.relay->chat;
 
-    dprintf(uidx, "%s %s.\n", BOT_CANTLINKTO, dcc[idx].nick);
+    dprintf(uidx, _("Could not link to %s.\n"), dcc[idx].nick);
     dcc[uidx].status = dcc[uidx].u.relay->old_status;
     nfree(dcc[uidx].u.relay);
     dcc[uidx].u.chat = ci;
@@ -1148,31 +1133,30 @@
 
   u = get_user_by_handle(userlist, nick);
   if (!u || !(u->flags & USER_BOT)) {
-    dprintf(idx, "%s %s\n", nick, BOT_BOTUNKNOWN);
+    dprintf(idx, _("%s is not a known bot.\n"), nick);
     return;
   }
   if (!egg_strcasecmp(nick, botnetnick)) {
-    dprintf(idx, "%s\n", BOT_CANTRELAYMYSELF);
+    dprintf(idx, "%s\n", _("Relay to myself?  What on EARTH would be the point?!"));
     return;
   }
   /* Address to connect to is in 'info' */
   bi = (struct bot_addr *) get_user(&USERENTRY_BOTADDR, u);
   if (!bi || !strlen(bi->address) || !bi->relay_port || (bi->relay_port <= 0)) {
-    dprintf(idx, "%s '%s'.\n", BOT_NOTELNETADDY, nick);
-    dprintf(idx, "%s .chaddr %s %s\n", MISC_USEFORMAT, nick,
-            MISC_CHADDRFORMAT);
+    dprintf(idx, _("Invalid telnet address:port stored for '%s'.\n"), nick);
+    dprintf(idx, _("Use: .chaddr %s <address> <port#>[/<relay-port#>]\n"), nick);
     return;
   }
   i = new_dcc(&DCC_DNSWAIT, sizeof(struct dns_info));
   if (i < 0) {
-    dprintf(idx, "%s\n", DCC_TOOMANYDCCS1);
+    dprintf(idx, _("Sorry, too many DCC connections.\n"));
     return;
   }
 
   dcc[i].sock = getsock(AF_INET, SOCK_STRONGCONN | SOCK_VIRTUAL);
   if (dcc[i].sock < 0) {
     lostdcc(i);
-    dprintf(idx, "%s\n", MISC_NOFREESOCK);
+    dprintf(idx, "%s\n", _("No free sockets available."));
     return;
   }
 
@@ -1186,13 +1170,13 @@
   strcpy(dcc[i].host, bi->address);
 #ifdef IPV6
   if (strchr(bi->address, ':'))
-    dprintf(idx, "%s %s @ [%s]:%d ...\n", BOT_CONNECTINGTO, nick,
+    dprintf(idx, _("Connecting to %s @ [%s]:%d ...\n"), nick,
             bi->address, bi->relay_port);
   else
 #endif
-  dprintf(idx, "%s %s @ %s:%d ...\n", BOT_CONNECTINGTO, nick,
+  dprintf(idx, _("Connecting to %s @ %s:%d ...\n"), nick,
           bi->address, bi->relay_port);
-  dprintf(idx, "%s\n", BOT_BYEINFO1);
+  dprintf(idx, _("(Type *BYE* on a line by itself to abort.)\n"));
   dcc[idx].type = &DCC_PRE_RELAY;
   ci = dcc[idx].u.chat;
   dcc[idx].u.relay = get_data_ptr(sizeof(struct relay_info));
@@ -1222,14 +1206,14 @@
       break;
     }
   if (uidx < 0) {
-    putlog(LOG_MISC, "*", "%s  %d -> %d", BOT_CANTFINDRELAYUSER,
+    putlog(LOG_MISC, "*", _("Can't find user for relay!  %d -> %d"),
            dcc[idx].sock, dcc[idx].u.relay->sock);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
   }
   ci = dcc[uidx].u.relay->chat;
-  dprintf(uidx, "%s %s.\n", BOT_CANTLINKTO, dcc[idx].nick);
+  dprintf(uidx, _("Could not link to %s.\n"), dcc[idx].nick);
   dcc[uidx].status = dcc[uidx].u.relay->old_status;
   nfree(dcc[uidx].u.relay);
   dcc[uidx].u.chat = ci;
@@ -1295,7 +1279,7 @@
       }
   }
   if (tidx < 0) {
-    putlog(LOG_MISC, "*", "%s  %d -> %d", BOT_CANTFINDRELAYUSER,
+    putlog(LOG_MISC, "*", _("Can't find user for relay!  %d -> %d"),
            dcc[idx].sock, dcc[idx].u.relay->sock);
     killsock(dcc[idx].sock);
     lostdcc(idx);
@@ -1305,9 +1289,9 @@
     /* Disconnect */
     struct chat_info *ci = dcc[idx].u.relay->chat;
 
-    dprintf(idx, "%s %s.\n", BOT_ABORTRELAY1, dcc[tidx].nick);
-    dprintf(idx, "%s %s.\n\n", BOT_ABORTRELAY2, botnetnick);
-    putlog(LOG_MISC, "*", "%s %s -> %s", BOT_ABORTRELAY3, dcc[idx].nick,
+    dprintf(idx, _("Aborting relay attempt to %s.\n"), dcc[tidx].nick);
+    dprintf(idx, _("You are now back on %s.\n\n"), botnetnick);
+    putlog(LOG_MISC, "*", _("Relay aborted: %s -> %s"), dcc[idx].nick,
            dcc[tidx].nick);
     dcc[idx].status = dcc[idx].u.relay->old_status;
     nfree(dcc[idx].u.relay);
@@ -1341,15 +1325,15 @@
       }
   }
   if (tidx < 0) {
-    putlog(LOG_MISC, "*", "%s  %d -> %d", BOT_CANTFINDRELAYUSER,
+    putlog(LOG_MISC, "*", _("Can't find user for relay!  %d -> %d"),
            dcc[idx].sock, dcc[idx].u.relay->sock);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
   }
-  putlog(LOG_MISC, "*", "%s [%s]%s/%d", BOT_LOSTDCCUSER, dcc[idx].nick,
+  putlog(LOG_MISC, "*", _("Lost dcc connection to [%s]%s/%d"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
-  putlog(LOG_MISC, "*", "(%s %s)", BOT_DROPPINGRELAY, dcc[tidx].nick);
+  putlog(LOG_MISC, "*", _("(Dropping relay attempt to %s)"), dcc[tidx].nick);
   if ((dcc[tidx].sock != STDOUT) || backgrd) {
     if (idx > tidx) {
       int t = tidx;
@@ -1360,7 +1344,7 @@
     killsock(dcc[tidx].sock);
     lostdcc(tidx);
   } else
-    fatal("Lost my terminal?!", 0);
+    fatal(_("Lost my terminal?!"), 0);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1375,7 +1359,7 @@
         (dcc[i].u.relay->sock == dcc[idx].sock))
       uidx = i;
   if (uidx < 0) {
-    putlog(LOG_MISC, "*", "%s  %d -> %d", BOT_CANTFINDRELAYUSER,
+    putlog(LOG_MISC, "*", _("Can't find user for relay!  %d -> %d"),
            dcc[i].sock, dcc[i].u.relay->sock);
     killsock(dcc[i].sock);
     lostdcc(i);
@@ -1384,16 +1368,18 @@
   dcc[idx].type = &DCC_RELAY;
   dcc[idx].u.relay->sock = dcc[uidx].sock;
   dcc[uidx].u.relay->sock = dcc[idx].sock;
-  dprintf(uidx, "%s %s ...\n", BOT_RELAYSUCCESS, dcc[idx].nick);
-  dprintf(uidx, "%s\n\n", BOT_BYEINFO2);
-  putlog(LOG_MISC, "*", "%s %s -> %s", BOT_RELAYLINK,
-         dcc[uidx].nick, dcc[idx].nick);
+  dprintf(uidx, _("Success!\n\nNOW CONNECTED TO RELAY BOT %s ...\n"),
+          dcc[idx].nick);
+  dprintf(uidx, _("(You can type *BYE* to prematurely close the connection.)"
+          "\n\n"));
+  putlog(LOG_MISC, "*", _("Relay link: %s -> %s"), dcc[uidx].nick, 
+         dcc[idx].nick);
   ri = dcc[uidx].u.relay;       /* YEAH */
   dcc[uidx].type = &DCC_CHAT;
   dcc[uidx].u.chat = ri->chat;
   if (dcc[uidx].u.chat->channel >= 0) {
-    chanout_but(-1, dcc[uidx].u.chat->channel, "*** %s %s\n",
-                dcc[uidx].nick, BOT_PARTYLEFT);
+    chanout_but(-1, dcc[uidx].u.chat->channel, _("*** %s left the party line.\n"),
+                dcc[uidx].nick);
     if (dcc[uidx].u.chat->channel < GLOBAL_CHANS)
       botnet_send_part_idx(uidx, NULL);
     check_tcl_chpt(botnetnick, dcc[uidx].nick, dcc[uidx].sock,
@@ -1421,16 +1407,17 @@
   /* In case echo was off, turn it back on (send IAC WON'T ECHO): */
   if (dcc[j].status & STAT_TELNET)
     dprintf(j, TLN_IAC_C TLN_WONT_C TLN_ECHO_C "\n");
-  putlog(LOG_MISC, "*", "%s: %s -> %s", BOT_ENDRELAY1, dcc[j].nick,
+  putlog(LOG_MISC, "*", _("Ended relay link: %s -> %s"), dcc[j].nick,
          dcc[idx].nick);
-  dprintf(j, "\n\n*** %s %s\n", BOT_ENDRELAY2, botnetnick);
+  dprintf(j, _("\n\n*** RELAY CONNECTION DROPPED.\nYou are now back on %s\n"),
+          botnetnick);
   ci = dcc[j].u.relay->chat;
   nfree(dcc[j].u.relay);
   dcc[j].u.chat = ci;
   dcc[j].type = &DCC_CHAT;
   if (dcc[j].u.chat->channel >= 0) {
-    chanout_but(-1, dcc[j].u.chat->channel, "*** %s %s.\n",
-                dcc[j].nick, BOT_PARTYREJOINED);
+    chanout_but(-1, dcc[j].u.chat->channel,
+                _("*** %s rejoined the party line..\n"), dcc[j].nick);
     if (dcc[j].u.chat->channel < GLOBAL_CHANS)
       botnet_send_join_idx(j, -1);
   }
@@ -1445,12 +1432,12 @@
 {
   register int j, x = dcc[idx].u.relay->sock;
 
-  putlog(LOG_MISC, "*", "%s [%s]%s/%d", BOT_LOSTDCCUSER, dcc[idx].nick,
+  putlog(LOG_MISC, "*", _("Lost dcc connection to [%s]%s/%d"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
   for (j = 0; (dcc[j].sock != x) || (dcc[j].type == &DCC_FORK_RELAY); j++);
-  putlog(LOG_MISC, "*", "(%s %s)", BOT_DROPPEDRELAY, dcc[j].nick);
+  putlog(LOG_MISC, "*", _("(Dropping relay link to %s)"), dcc[j].nick);
   killsock(dcc[j].sock);
   lostdcc(j);                   /* Drop connection to the bot */
 }
@@ -1514,13 +1501,13 @@
   /* In case echo was off, turn it back on (send IAC WON'T ECHO): */
   if (dcc[idx].status & STAT_TELNET)
     dprintf(idx, TLN_IAC_C TLN_WONT_C TLN_ECHO_C "\n");
-  dprintf(idx, "\n(%s %s.)\n", BOT_BREAKRELAY, dcc[j].nick);
-  dprintf(idx, "%s %s.\n\n", BOT_ABORTRELAY2, botnetnick);
-  putlog(LOG_MISC, "*", "%s: %s -> %s", BOT_RELAYBROKEN,
-         dcc[idx].nick, dcc[j].nick);
+  dprintf(idx, _("\n(Breaking connection to %s.)\n"), dcc[j].nick);
+  dprintf(idx, _("You are now back on %s.\n\n"), botnetnick);
+  putlog(LOG_MISC, "*", _("Relay broken: %s -> %s"), dcc[idx].nick,
+         dcc[j].nick);
   if (dcc[idx].u.relay->chat->channel >= 0) {
     chanout_but(-1, dcc[idx].u.relay->chat->channel,
-                "*** %s joined the party line.\n", dcc[idx].nick);
+                _("*** %s joined the party line.\n"), dcc[idx].nick);
     if (dcc[idx].u.relay->chat->channel < GLOBAL_CHANS)
       botnet_send_join_idx(idx, -1);
   }
@@ -1650,13 +1637,13 @@
       if (dcc[i].status & STAT_PINGED) {
         char s[1024];
 
-        putlog(LOG_BOTS, "*", "%s: %s", BOT_PINGTIMEOUT, dcc[i].nick);
+        putlog(LOG_BOTS, "*", _("Ping timeout: %s"), dcc[i].nick);
         bot = findbot(dcc[i].nick);
         bots = bots_in_subtree(bot);
         users = users_in_subtree(bot);
-        simple_sprintf(s, "%s: %s (lost %d bot%s and %d user%s)",
-                       BOT_PINGTIMEOUT, dcc[i].nick, bots,
-                       (bots != 1) ? "s" : "", users, (users != 1) ? "s" : "");
+        simple_sprintf(s, _("Ping timeout: %s (lost %d %s and %d %s)"),
+                       dcc[i].nick, bots, P_("bot", "bots", bots),
+                       P_("user", "users", users));
         chatout("*** %s\n", s);
         botnet_send_unlinked(i, dcc[i].nick, s);
         killsock(dcc[i].sock);
@@ -1677,16 +1664,16 @@
           if (dcc[i].status & STAT_WARNED) {
             char s[1024];
 
-            putlog(LOG_BOTS, "*", "%s %s (%s).", BOT_DISCONNECTED,
-                   dcc[i].nick, BOT_BOTNOTLEAFLIKE);
-            dprintf(i, "bye %s\n", BOT_BOTNOTLEAFLIKE);
+            putlog(LOG_BOTS, "*", _("Disconnected from: %s (unleaflike behavior)."),
+                   dcc[i].nick);
+            dprintf(i, "bye %s\n", "unleaflike behavior");
             bot = findbot(dcc[i].nick);
             bots = bots_in_subtree(bot);
             users = users_in_subtree(bot);
-            simple_sprintf(s, "%s %s (%s) (lost %d bot%s and %d user%s)",
-                           BOT_DISCONNECTED, dcc[i].nick, BOT_BOTNOTLEAFLIKE,
-                           bots, (bots != 1) ? "s" : "", users, (users != 1) ?
-                           "s" : "");
+            simple_sprintf(s, _("Disconnected from: %s (unleaflike behavior) "
+                           "(lost %d %s and %d %s)"), dcc[i].nick,
+                           bots, P_("bot", "bots", bots),
+                           users, P_("user", "users", users));
             chatout("*** %s\n", s);
             botnet_send_unlinked(i, dcc[i].nick, s);
             killsock(dcc[i].sock);
@@ -1710,9 +1697,9 @@
   bot = findbot(dcc[idx].nick);
   bots = bots_in_subtree(bot);
   users = users_in_subtree(bot);
-  simple_sprintf(s, "%s: %s (lost %d bot%s and %d user%s)", BOT_BOTDROPPED,
-                 dcc[idx].nick, bots, (bots != 1) ? "s" : "", users,
-                 (users != 1) ? "s" : "");
+  simple_sprintf(s, _("Dropped bot: %s (lost %d %s and %d %s)"), dcc[idx].nick,
+                 bots, P_("bot", "bots", bots),
+                 users, P_("user", "users", users));
   chatout("*** %s\n", s);
   botnet_send_unlinked(idx, dcc[idx].nick, s);
   killsock(dcc[idx].sock);
Index: eggdrop1.8/src/chanprog.c
diff -u eggdrop1.8/src/chanprog.c:1.7 eggdrop1.8/src/chanprog.c:1.7.2.1
--- eggdrop1.8/src/chanprog.c:1.7	Thu Nov  4 11:54:04 2010
+++ eggdrop1.8/src/chanprog.c	Wed Nov 10 07:39:19 2010
@@ -7,7 +7,7 @@
  *   telling the current programmed settings
  *   initializing a lot of stuff and loading the tcl scripts
  *
- * $Id: chanprog.c,v 1.7 2010/11/04 17:54:04 thommey Exp $
+ * $Id: chanprog.c,v 1.7.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -270,16 +270,16 @@
   sprintf(&s[strlen(s)], "%02d:%02d", (int) hr, (int) min);
   s1[0] = 0;
   if (backgrd)
-    strcpy(s1, MISC_BACKGROUND);
+    strcpy(s1, _("background mode"));
   else {
     if (term_z)
-      strcpy(s1, MISC_TERMMODE);
+      strcpy(s1, _("terminal mode"));
     else if (con_chan)
-      strcpy(s1, MISC_STATMODE);
+      strcpy(s1, _("status mode"));
     else
-      strcpy(s1, MISC_LOGMODE);
+      strcpy(s1, _("log dump mode"));
   }
-  dprintf(idx, "%s %s  (%s)\n", MISC_ONLINEFOR, s, s1);
+  dprintf(idx, _("Online for %s  (%s)\n"), s, s1);
 }
 
 /* Dump status info out to dcc
@@ -297,7 +297,7 @@
   if (uname(&un) < 0) {
 #endif
     vers_t = " ";
-    uni_t  = "*unknown*";
+    uni_t  = _("*Unknown*");
 #ifdef HAVE_UNAME
   } else {
     vers_t = un.release;
@@ -306,9 +306,9 @@
 #endif
 
   i = count_users(userlist);
-  dprintf(idx, "I am %s, running %s: %d user%s (mem: %uk).\n",
-          botnetnick, ver, i, i == 1 ? "" : "s",
-          (int) (expected_memory() / 1024));
+  dprintf(idx, P_("I am %s, running %s: %d user (mem: %uk).\n",
+          "I am %s, running %s: %d users (mem: %uk).\n", i),
+          botnetnick, ver, i, (int) (expected_memory() / 1024));
 
   s[0] = 0;
   if (now2 > 86400) {
@@ -325,61 +325,60 @@
   sprintf(&s[strlen(s)], "%02d:%02d", (int) hr, (int) min);
   s1[0] = 0;
   if (backgrd)
-    strcpy(s1, MISC_BACKGROUND);
+    strcpy(s1, _("background"));
   else {
     if (term_z)
-      strcpy(s1, MISC_TERMMODE);
+      strcpy(s1, _("terminal mode"));
     else if (con_chan)
-      strcpy(s1, MISC_STATMODE);
+      strcpy(s1, _("status mode"));
     else
-      strcpy(s1, MISC_LOGMODE);
+      strcpy(s1, _("log dump mode"));
   }
   cputime = getcputime();
   if (cputime < 0)
-    sprintf(s2, "CPU: unknown");
+    sprintf(s2, _("CPU: unknown"));
   else {
     hr = cputime / 60;
     cputime -= hr * 60;
-    sprintf(s2, "CPU: %02d:%05.2f", (int) hr, cputime); /* Actally min/sec */
+    sprintf(s2, _("CPU: %02d:%05.2f"), (int) hr, cputime); /* min/sec */
   }
-  dprintf(idx, "%s %s (%s) - %s - %s: %4.1f%%\n", MISC_ONLINEFOR,
-          s, s1, s2, MISC_CACHEHIT,
+  dprintf(idx, _("Online for %s (%s) - %s - Cache hit: %4.1f%%\n"), s, s1, s2,
           100.0 * ((float) cache_hit) / ((float) (cache_hit + cache_miss)));
 
-  dprintf(idx, "Configured with: " EGG_AC_ARGS "\n");
+  dprintf(idx, _("Configured with: %s\n"), EGG_AC_ARGS);
   if (admin[0])
-    dprintf(idx, "Admin: %s\n", admin);
+    dprintf(idx, _("Admin: %s\n"), admin);
 
-  dprintf(idx, "Config file: %s\n", configfile);
-  dprintf(idx, "OS: %s %s\n", uni_t, vers_t);
-  dprintf(idx, "Process ID: %d (parent %d)\n", getpid(), getppid());
+  dprintf(idx, _("Config file: %s\n"), configfile);
+  dprintf(idx, _("OS: %s %s\n"), uni_t, vers_t);
+  dprintf(idx, _("Process ID: %d (parent %d)\n"), getpid(), getppid());
 
   /* info library */
-  dprintf(idx, "%s %s\n", MISC_TCLLIBRARY,
+  dprintf(idx, _("Tcl library: %s\n"),
           ((interp) && (Tcl_Eval(interp, "info library") == TCL_OK)) ?
-          tcl_resultstring() : "*unknown*");
+          tcl_resultstring() : _("*unknown*"));
 
   /* info tclversion/patchlevel */
-  dprintf(idx, "%s %s (%s %s)\n", MISC_TCLVERSION,
+  dprintf(idx, _("Tcl version: %s (%s %s)\n"),
           ((interp) && (Tcl_Eval(interp, "info patchlevel") == TCL_OK)) ?
           tcl_resultstring() : (Tcl_Eval(interp, "info tclversion") == TCL_OK) ?
-          tcl_resultstring() : "*unknown*", MISC_TCLHVERSION,
-          TCL_PATCH_LEVEL ? TCL_PATCH_LEVEL : "*unknown*");
+          tcl_resultstring() : _("*unknown*"), _("header version"),
+          TCL_PATCH_LEVEL ? TCL_PATCH_LEVEL : _("*unknown*"));
 
   if (tcl_threaded())
-    dprintf(idx, "Tcl is threaded.\n");
+    dprintf(idx, _("Tcl is threaded.\n"));
 #ifdef TLS
-  dprintf(idx, "TLS support is enabled.\n");
-  dprintf(idx, "TLS library: %s\n", SSLeay_version(SSLEAY_VERSION));
+  dprintf(idx, _("TLS support is enabled.\n"));
+  dprintf(idx, _("TLS library: %s\n"), SSLeay_version(SSLEAY_VERSION));
 #else
-  dprintf(idx, "TLS support is not available.\n");
+  dprintf(idx, _("TLS support is not available.\n"));
 #endif
 #ifdef IPV6
-  dprintf(idx, "IPv6 support is enabled.\n");
+  dprintf(idx, _("IPv6 support is enabled.\n"));
 #else
-  dprintf(idx, "IPv6 support is not available.\n");
+  dprintf(idx, _("IPv6 support is not available.\n"));
 #endif
-  dprintf(idx, "Socket table: %d/%d\n", threaddata()->MAXSOCKS, max_socks);
+  dprintf(idx, _("Socket table: %d/%d\n"), threaddata()->MAXSOCKS, max_socks);
 }
 
 /* Show all internal state variables
@@ -390,34 +389,30 @@
   int i;
   struct flag_record fr = { FR_GLOBAL, 0, 0, 0, 0, 0 };
 
-  dprintf(idx, "Botnet nickname: %s\n", botnetnick);
+  dprintf(idx, _("Botnet nickname: %s\n"), botnetnick);
   if (firewall[0])
-    dprintf(idx, "Firewall: %s:%d\n", firewall, firewallport);
-  dprintf(idx, "Userfile: %s\n", userfile);
-  dprintf(idx, "Motd: %s\n",  motdfile);
-  dprintf(idx, "Directories:\n");
-#ifndef STATIC
-  dprintf(idx, "  Help   : %s\n", helpdir);
-  dprintf(idx, "  Temp   : %s\n", tempdir);
-  dprintf(idx, "  Modules: %s\n", moddir);
-#else
-  dprintf(idx, "  Help: %s\n", helpdir);
-  dprintf(idx, "  Temp: %s\n", tempdir);
+    dprintf(idx, _("Firewall: %s:%d\n"), firewall, firewallport);
+  dprintf(idx, _("Userfile: %s\n"), userfile);
+  dprintf(idx, _("Motd: %s\n"),  motdfile);
+  dprintf(idx, _("Directories:\n"));
+  dprintf(idx, _("  Help   : %s\n"), helpdir);
+  dprintf(idx, _("  Temp   : %s\n"), tempdir);
+#ifdef STATIC
+  dprintf(idx, _("  Modules: %s\n"), moddir);
 #endif
   fr.global = default_flags;
 
   build_flags(s, &fr, NULL);
-  dprintf(idx, "%s [%s], %s: %s\n", MISC_NEWUSERFLAGS, s,
-          MISC_NOTIFY, notify_new);
+  dprintf(idx, _("New users get flags [%s], notify: %s\n"), s, notify_new);
   if (owner[0])
-    dprintf(idx, "%s: %s\n", MISC_PERMOWNER, owner);
+    dprintf(idx, _("Permanent owner(s): %s\n"), owner);
   for (i = 0; i < max_logs; i++)
     if (logs[i].filename != NULL) {
-      dprintf(idx, "Logfile #%d: %s on %s (%s: %s)\n", i + 1,
+      dprintf(idx, _("Logfile #%d: %s on %s (%s: %s)\n"), i + 1,
               logs[i].filename, logs[i].chname,
               masktype(logs[i].mask), maskname(logs[i].mask));
     }
-  dprintf(idx, "Ignores last %d minute%s.\n", ignore_time,
+  dprintf(idx, _("Ignores last %d minute%s.\n"), ignore_time,
           (ignore_time != 1) ? "s" : "");
 }
 
@@ -466,7 +461,7 @@
 
   /* Now read it */
   if (!readtclprog(configfile))
-    fatal(MISC_NOCONFIGFILE, 0);
+    fatal(_("CONFIG FILE NOT LOADED (NOT FOUND, OR ERROR)"), 0);
 
   for (i = 0; i < max_logs; i++) {
     if (logs[i].flags & LF_EXPIRING) {
@@ -495,25 +490,27 @@
     strncpyz(botnetnick, origbotname, HANDLEN + 1);
 
   if (!botnetnick[0])
-    fatal("I don't have a botnet nick!!\n", 0);
+    fatal(_("I don't have a botnet nick!!\n"), 0);
 
   if (!userfile[0])
-    fatal(MISC_NOUSERFILE2, 0);
+    fatal(_("USER FILE NOT FOUND!  (try './eggdrop -m %s' to make one)\n"), 0);
 
   if (!readuserfile(userfile, &userlist)) {
     if (!make_userfile) {
       char tmp[178];
 
-      egg_snprintf(tmp, sizeof tmp, MISC_NOUSERFILE, configfile);
+      egg_snprintf(tmp, sizeof tmp, _("USER FILE NOT FOUND!  "
+                   "(try './eggdrop -m %s' to make one)\n"), configfile);
       fatal(tmp, 0);
     }
-    printf("\n\n%s\n", MISC_NOUSERFILE2);
+    printf(_("STARTING BOT IN USERFILE CREATION MODE.\n"
+           "Telnet to the bot and enter 'NEW' as your nickname."));
     if (module_find("server", 0, 0))
-      printf(MISC_USERFCREATE1, origbotname);
-    printf("%s\n\n", MISC_USERFCREATE2);
+      printf(_("OR go to IRC and type:  /msg %s hello\n"), origbotname);
+    printf("This will make the bot recognize you as the master.\n");
   } else if (make_userfile) {
     make_userfile = 0;
-    printf("%s\n", MISC_USERFEXISTS);
+    printf("%s\n", _("USERFILE ALREADY EXISTS (drop the '-m')"));
   }
 
   if (helpdir[0])
@@ -536,7 +533,7 @@
   sprintf(s, "%s.test-%u-%s", tempdir, getpid(), rands);
   f = fopen(s, "w");
   if (f == NULL)
-    fatal(MISC_CANTWRITETEMP, 0);
+    fatal(_("CAN'T WRITE TO TEMP DIR"), 0);
   fclose(f);
   unlink(s);
   reaffirm_owners();
@@ -548,7 +545,7 @@
 void reload()
 {
   if (!file_readable(userfile)) {
-    putlog(LOG_MISC, "*", MISC_CANTRELOADUSER);
+    putlog(LOG_MISC, "*", _("Can't reload user file!"));
     return;
   }
 
@@ -557,7 +554,7 @@
   noshare = 0;
   userlist = NULL;
   if (!readuserfile(userfile, &userlist))
-    fatal(MISC_MISSINGUSERF, 0);
+    fatal(_("User file is missing!"), 0);
   reaffirm_owners();
   check_tcl_event("userfile-loaded");
   call_hook(HOOK_READ_USERFILE);
Index: eggdrop1.8/src/cmds.c
diff -u eggdrop1.8/src/cmds.c:1.4 eggdrop1.8/src/cmds.c:1.4.2.1
--- eggdrop1.8/src/cmds.c:1.4	Mon Nov  1 16:38:34 2010
+++ eggdrop1.8/src/cmds.c	Wed Nov 10 07:39:19 2010
@@ -3,7 +3,7 @@
  *   commands from a user via dcc
  *   (split in 2, this portion contains no-irc commands)
  *
- * $Id: cmds.c,v 1.4 2010/11/01 22:38:34 pseudo Exp $
+ * $Id: cmds.c,v 1.4.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -68,7 +68,7 @@
         egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
         u = get_user_by_host(s);
         if (u) {
-          dprintf(idx, "(Can't add hostmask for %s because it matches %s)\n",
+          dprintf(idx, _("(Can't add hostmask for %s because it matches %s)\n"),
                   nick, u->handle);
           return 0;
         }
@@ -77,7 +77,7 @@
                        m->userhost + 1);
         else
           egg_snprintf(s, sizeof s, "*!%s", m->userhost);
-        dprintf(idx, "(Added hostmask for %s from %s)\n", nick, chan->dname);
+        dprintf(idx, _("(Added hostmask for %s from %s)\n"), nick, chan->dname);
         addhost_by_handle(nick, s);
         return 1;
       }
@@ -93,17 +93,17 @@
   char s[1024]; /* temp fix - 1.4 has a better one */
 
   if (!chan)
-    dprintf(idx, "%s (* = owner, + = master, %% = botmaster, @ = op, "
-            "^ = halfop)\n", BOT_PARTYMEMBS);
+    dprintf(idx, _("Party line members: (* = owner, + = master, "
+            "%% = botmaster, @ = op, ^ = halfop)\n"));
   else {
     simple_sprintf(s, "assoc %d", chan);
     if ((Tcl_Eval(interp, s) != TCL_OK) || tcl_resultempty())
-      dprintf(idx, "%s %s%d: (* = owner, + = master, %% = botmaster, @ = op, "
-              "^ = halfop)\n", BOT_PEOPLEONCHAN, (chan < GLOBAL_CHANS) ? "" :
-              "*", chan % GLOBAL_CHANS);
+      dprintf(idx, _("People on channel %s%d: (* = owner, + = master, "
+              "%% = botmaster, @ = op, ^ = halfop)\n"), (chan < GLOBAL_CHANS) ?
+              "" : "*", chan % GLOBAL_CHANS);
     else
-      dprintf(idx, "%s '%s' (%s%d): (* = owner, + = master, %% = botmaster, @ = op, "
-              "^ = halfop)\n", BOT_PEOPLEONCHAN, tcl_resultstring(),
+      dprintf(idx, _("People on channel '%s' (%s%d): (* = owner, + = master, "
+              "%% = botmaster, @ = op, ^ = halfop)\n"), tcl_resultstring(),
               (chan < GLOBAL_CHANS) ? "" : "*", chan % GLOBAL_CHANS);
   }
 
@@ -143,21 +143,21 @@
           hrs = ((now - dcc[i].timeval) - (days * 86400)) / 3600;
           mins = ((now - dcc[i].timeval) - (hrs * 3600)) / 60;
           if (days > 0)
-            sprintf(&s[strlen(s)], " (idle %lud%luh)", days, hrs);
+            sprintf(&s[strlen(s)], _(" (idle %lud%luh)"), days, hrs);
           else if (hrs > 0)
-            sprintf(&s[strlen(s)], " (idle %luh%lum)", hrs, mins);
+            sprintf(&s[strlen(s)], _(" (idle %luh%lum)"), hrs, mins);
           else
-            sprintf(&s[strlen(s)], " (idle %lum)", mins);
+            sprintf(&s[strlen(s)], _(" (idle %lum)"), mins);
         }
         dprintf(idx, "%s\n", s);
         if (dcc[i].u.chat->away != NULL)
-          dprintf(idx, "      AWAY: %s\n", dcc[i].u.chat->away);
+          dprintf(idx, _("      AWAY: %s\n"), dcc[i].u.chat->away);
       }
   for (i = 0; i < dcc_total; i++)
     if (dcc[i].type == &DCC_BOT) {
       if (!ok) {
         ok = 1;
-        dprintf(idx, "Bots connected:\n");
+        dprintf(idx, _("Bots connected:\n"));
       }
       egg_strftime(s, 14, "%d %b %H:%M", localtime(&dcc[i].timeval));
       if (atr & USER_OWNER) {
@@ -180,7 +180,7 @@
     if ((dcc[i].type == &DCC_CHAT) && (dcc[i].u.chat->channel != chan)) {
       if (!ok) {
         ok = 1;
-        dprintf(idx, "Other people on the bot:\n");
+        dprintf(idx, _("Other people on the bot:\n"));
       }
       if (atr & USER_OWNER) {
         egg_snprintf(format, sizeof format, "  [%%.2lu]  %%c%%-%us ", nicklen);
@@ -207,19 +207,19 @@
       if (now - dcc[i].timeval > 300) {
         k = (now - dcc[i].timeval) / 60;
         if (k < 60)
-          sprintf(&s[strlen(s)], " (idle %dm)", k);
+          sprintf(&s[strlen(s)], _(" (idle %dm)"), k);
         else
-          sprintf(&s[strlen(s)], " (idle %dh%dm)", k / 60, k % 60);
+          sprintf(&s[strlen(s)], _(" (idle %dh%dm)"), k / 60, k % 60);
       }
       dprintf(idx, "%s\n", s);
       if (dcc[i].u.chat->away != NULL)
-        dprintf(idx, "      AWAY: %s\n", dcc[i].u.chat->away);
+        dprintf(idx, _("      AWAY: %s\n"), dcc[i].u.chat->away);
     }
     if ((atr & USER_MASTER) && (dcc[i].type->flags & DCT_SHOWWHO) &&
         (dcc[i].type != &DCC_CHAT)) {
       if (!ok) {
         ok = 1;
-        dprintf(idx, "Other people on the bot:\n");
+        dprintf(idx, _("Other people on the bot:\n"));
       }
       if (atr & USER_OWNER) {
         egg_snprintf(format, sizeof format, "  [%%.2lu]  %%c%%-%us (files) %%s",
@@ -280,13 +280,13 @@
 
     if (s[0]) {
       s[strlen(s) - 2] = 0;
-      dprintf(idx, "*** [%s] %s <%s> (%s) [UP %s]\n", botnetnick,
+      dprintf(idx, _("*** [%s] %s <%s> (%s) [UP %s]\n"), botnetnick,
               ver, network, s, s2);
     } else
-      dprintf(idx, "*** [%s] %s <%s> (%s) [UP %s]\n", botnetnick,
-              ver, network, BOT_NOCHANNELS, s2);
+      dprintf(idx, _("*** [%s] %s <%s> (no channels) [UP %s]\n"), botnetnick,
+              ver, network, s2);
   } else
-    dprintf(idx, "*** [%s] %s <NO_IRC> [UP %s]\n", botnetnick, ver, s2);
+    dprintf(idx, _("*** [%s] %s <NO_IRC> [UP %s]\n"), botnetnick, ver, s2);
 }
 
 static void cmd_whom(struct userrec *u, int idx, char *par)
@@ -296,7 +296,7 @@
     answer_local_whom(idx, -1);
     return;
   } else if (dcc[idx].u.chat->channel < 0) {
-    dprintf(idx, "You have chat turned off.\n");
+    dprintf(idx, _("You have chat turned off.\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# whom %s", dcc[idx].nick, par);
@@ -312,14 +312,14 @@
         chan = tcl_resultint();
       }
       if (chan <= 0) {
-        dprintf(idx, "No such channel exists.\n");
+        dprintf(idx, _("No such channel exists.\n"));
         return;
       }
     } else
       chan = atoi(par);
     if ((chan < 0) || (chan >= GLOBAL_CHANS)) {
-      dprintf(idx, "Channel number out of range: must be between 0 and %d."
-              "\n", GLOBAL_CHANS);
+      dprintf(idx, _("Channel number out of range: must be between 0 "
+              "and %d.\n"), GLOBAL_CHANS);
       return;
     }
     answer_local_whom(idx, chan);
@@ -331,11 +331,11 @@
   int i;
 
   if (dcc[idx].u.chat->channel < 0) {
-    dprintf(idx, "You have chat turned off.\n");
+    dprintf(idx, _("You have chat turned off.\n"));
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "Usage: me <action>\n");
+    dprintf(idx, _("Usage: me <action>\n"));
     return;
   }
   if (dcc[idx].u.chat->away != NULL)
@@ -361,7 +361,7 @@
     else {
       i = nextbot(par);
       if (i < 0)
-        dprintf(idx, "That bot isn't connected.\n");
+        dprintf(idx, _("That bot isn't connected.\n"));
       else {
         char x[40];
 
@@ -395,19 +395,19 @@
   char *new;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: newpass <newpassword>\n");
+    dprintf(idx, _("Usage: newpass <newpassword>\n"));
     return;
   }
   new = newsplit(&par);
   if (strlen(new) > 16)
     new[16] = 0;
   if (strlen(new) < 6) {
-    dprintf(idx, "Please use at least 6 characters.\n");
+    dprintf(idx, _("Please use at least 6 characters.\n"));
     return;
   }
   set_user(&USERENTRY_PASS, u, new);
   putlog(LOG_CMDS, "*", "#%s# newpass...", dcc[idx].nick);
-  dprintf(idx, "Changed password to '%s'.\n", new);
+  dprintf(idx, _("Changed password to '%s'.\n"), new);
 }
 
 static void cmd_bots(struct userrec *u, int idx, char *par)
@@ -431,7 +431,7 @@
 static void cmd_rehelp(struct userrec *u, int idx, char *par)
 {
   putlog(LOG_CMDS, "*", "#%s# rehelp", dcc[idx].nick);
-  dprintf(idx, "Reload help cache...\n");
+  dprintf(idx, _("Reloading help cache...\n"));
   reload_help_data();
 }
 
@@ -470,10 +470,10 @@
 static void cmd_addlog(struct userrec *u, int idx, char *par)
 {
   if (!par[0]) {
-    dprintf(idx, "Usage: addlog <message>\n");
+    dprintf(idx, _("Usage: addlog <message>\n"));
     return;
   }
-  dprintf(idx, "Placed entry in the log file.\n");
+  dprintf(idx, _("Placed entry in the log file.\n"));
   putlog(LOG_MISC, "*", "%s: %s", dcc[idx].nick, par);
 }
 
@@ -483,7 +483,7 @@
 
   if (par[0]) {
     if (dcc[idx].u.chat->channel < 0) {
-      dprintf(idx, "You have chat turned off.\n");
+      dprintf(idx, _("You have chat turned off.\n"));
       return;
     }
     putlog(LOG_CMDS, "*", "#%s# who %s", dcc[idx].nick, par);
@@ -492,9 +492,9 @@
     else {
       i = nextbot(par);
       if (i < 0) {
-        dprintf(idx, "That bot isn't connected.\n");
+        dprintf(idx, _("That bot isn't connected.\n"));
       } else if (dcc[idx].u.chat->channel >= GLOBAL_CHANS)
-        dprintf(idx, "You are on a local channel.\n");
+        dprintf(idx, _("You are on a local channel.\n"));
       else {
         char s[40];
 
@@ -514,7 +514,7 @@
 static void cmd_whois(struct userrec *u, int idx, char *par)
 {
   if (!par[0]) {
-    dprintf(idx, "Usage: whois <handle>\n");
+    dprintf(idx, _("Usage: whois <handle>\n"));
     return;
   }
 
@@ -528,7 +528,7 @@
   char *s, *s1, *chname;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: match <nick/host> [[skip] count]\n");
+    dprintf(idx, _("Usage: match <nick/host> [[skip] count]\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# match %s", dcc[idx].nick, par);
@@ -561,7 +561,7 @@
 
   if (!egg_strcasecmp(par, "all")) {
     if (!(atr & USER_MASTER)) {
-      dprintf(idx, "You do not have Bot Master privileges.\n");
+      dprintf(idx, _("You do not have Bot Master privileges.\n"));
       return;
     }
     putlog(LOG_CMDS, "*", "#%s# status all", dcc[idx].nick);
@@ -591,7 +591,7 @@
   struct userrec *u2;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: boot nick[@bot]\n");
+    dprintf(idx, _("Usage: boot nick[@bot]\n"));
     return;
   }
   who = newsplit(&par);
@@ -606,7 +606,7 @@
     if (remote_boots > 0) {
       i = nextbot(who);
       if (i < 0) {
-        dprintf(idx, "No such bot connected.\n");
+        dprintf(idx, _("No such bot connected.\n"));
         return;
       }
       botnet_send_reject(i, dcc[idx].nick, botnetnick, whonick,
@@ -614,7 +614,7 @@
       putlog(LOG_BOTS, "*", "#%s# boot %s@%s (%s)", dcc[idx].nick, whonick,
              who, par[0] ? par : dcc[idx].nick);
     } else
-      dprintf(idx, "Remote boots are disabled here.\n");
+      dprintf(idx, _("Remote boots are disabled here.\n"));
     return;
   }
   for (i = 0; i < dcc_total; i++)
@@ -623,24 +623,24 @@
       u2 = get_user_by_handle(userlist, dcc[i].nick);
       if (u2 && (u2->flags & USER_OWNER) &&
           egg_strcasecmp(dcc[idx].nick, who)) {
-        dprintf(idx, "You can't boot a bot owner.\n");
+        dprintf(idx, _("You can't boot a bot owner.\n"));
         return;
       }
       if (u2 && (u2->flags & USER_MASTER) && !(u && (u->flags & USER_MASTER))) {
-        dprintf(idx, "You can't boot a bot master.\n");
+        dprintf(idx, _("You can't boot a bot master.\n"));
         return;
       }
       files = (dcc[i].type->flags & DCT_FILES);
       if (files)
-        dprintf(idx, "Booted %s from the file area.\n", dcc[i].nick);
+        dprintf(idx, _("Booted %s from the file area.\n"), dcc[i].nick);
       else
-        dprintf(idx, "Booted %s from the party line.\n", dcc[i].nick);
+        dprintf(idx, _("Booted %s from the party line.\n"), dcc[i].nick);
       putlog(LOG_CMDS, "*", "#%s# boot %s %s", dcc[idx].nick, who, par);
       do_boot(i, dcc[idx].nick, par);
       ok = 1;
     }
   if (!ok)
-    dprintf(idx, "Who?  No such person on the party line.\n");
+    dprintf(idx, _("Who?  No such person on the party line.\n"));
 }
 
 static void cmd_console(struct userrec *u, int idx, char *par)
@@ -651,7 +651,7 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Your console is %s: %s (%s).\n",
+    dprintf(idx, _("Your console is %s: %s (%s).\n"),
             dcc[idx].u.chat->con_chan,
             masktype(dcc[idx].u.chat->con_flags),
             maskname(dcc[idx].u.chat->con_flags));
@@ -671,7 +671,7 @@
         dest = i;
       }
     if (!ok) {
-      dprintf(idx, "No such user on the party line!\n");
+      dprintf(idx, _("No such user on the party line!\n"));
       return;
     }
     nick[0] = 0;
@@ -683,12 +683,12 @@
   if ((nick[0] == '+' && findchan_by_dname(nick)) ||
       (nick[0] != '+' && strchr(CHANMETA "*", nick[0]))) {
     if (strcmp(nick, "*") && !findchan_by_dname(nick)) {
-      dprintf(idx, "Invalid console channel: %s.\n", nick);
+      dprintf(idx, _("Invalid console channel: %s.\n"), nick);
       return;
     }
     get_user_flagrec(u, &fr, nick);
     if (!chan_op(fr) && !(glob_op(fr) && !chan_deop(fr))) {
-      dprintf(idx, "You don't have op or master access to channel %s.\n",
+      dprintf(idx, _("You don't have op or master access to channel %s.\n"),
               nick);
       return;
     }
@@ -722,16 +722,16 @@
                                                dcc[dest].u.chat->con_flags);
   putlog(LOG_CMDS, "*", "#%s# console %s", dcc[idx].nick, s1);
   if (dest == idx) {
-    dprintf(idx, "Set your console to %s: %s (%s).\n",
+    dprintf(idx, _("Set your console to %s: %s (%s).\n"),
             dcc[idx].u.chat->con_chan,
             masktype(dcc[idx].u.chat->con_flags),
             maskname(dcc[idx].u.chat->con_flags));
   } else {
-    dprintf(idx, "Set console of %s to %s: %s (%s).\n", dcc[dest].nick,
+    dprintf(idx, _("Set console of %s to %s: %s (%s).\n"), dcc[dest].nick,
             dcc[dest].u.chat->con_chan,
             masktype(dcc[dest].u.chat->con_flags),
             maskname(dcc[dest].u.chat->con_flags));
-    dprintf(dest, "%s set your console to %s: %s (%s).\n", dcc[idx].nick,
+    dprintf(dest, _("%s set your console to %s: %s (%s).\n"), dcc[idx].nick,
             dcc[dest].u.chat->con_chan,
             masktype(dcc[dest].u.chat->con_flags),
             maskname(dcc[dest].u.chat->con_flags));
@@ -751,8 +751,8 @@
   struct bot_addr *bi;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +bot <handle> [address [telnet-port[/relay-port]]] "
-            "[host]\n");
+    dprintf(idx, _("Usage: +bot <handle> [address [telnet-port[/relay-port]]] "
+            "[host]\n"));
     return;
   }
 
@@ -765,12 +765,12 @@
     handle[HANDLEN] = 0;
 
   if (get_user_by_handle(userlist, handle)) {
-    dprintf(idx, "Someone already exists by that name.\n");
+    dprintf(idx, _("Someone already exists by that name.\n"));
     return;
   }
 
   if (strchr(BADHANDCHARS, handle[0]) != NULL) {
-    dprintf(idx, "You can't start a botnick with '%c'.\n", handle[0]);
+    dprintf(idx, _("You can't start a botnick with '%c'.\n"), handle[0]);
     return;
   }
 
@@ -813,28 +813,29 @@
            addr, port[0] ? " " : "", port[0] ? port : "", host[0] ? " " : "",
            host);
 #ifdef TLS
-    dprintf(idx, "Added bot '%s' with address [%s]:%s%d/%s%d and %s%s%s.\n",
+    dprintf(idx, _("Added bot '%s' with address [%s]:%s%d/%s%d and %s%s%s.\n"),
             handle, addr, (bi->ssl & TLS_BOT) ? "+" : "", bi->telnet_port,
             (bi->ssl & TLS_RELAY) ? "+" : "", bi->relay_port, host[0] ?
-            "hostmask '" : "no hostmask", host[0] ? host : "",
+            _("hostmask '") : _("no hostmask"), host[0] ? host : "",
             host[0] ? "'" : "");
 #else
-    dprintf(idx, "Added bot '%s' with address [%s]:%d/%d and %s%s%s.\n", handle,
-            addr, bi->telnet_port, bi->relay_port, host[0] ? "hostmask '" :
-            "no hostmask", host[0] ? host : "", host[0] ? "'" : "");
+    dprintf(idx, _("Added bot '%s' with address [%s]:%d/%d and %s%s%s.\n"),
+            handle, addr, bi->telnet_port, bi->relay_port, host[0] ?
+            _("hostmask '") : _("no hostmask"), host[0] ? host : "",
+            host[0] ? "'" : "");
 #endif
   } else {
     putlog(LOG_CMDS, "*", "#%s# +bot %s %s%s", dcc[idx].nick, handle,
            host[0] ? " " : "", host);
-    dprintf(idx, "Added bot '%s' with no address and %s%s%s.\n", handle,
-            host[0] ? "hostmask '" : "no hostmask", host[0] ? host : "",
+    dprintf(idx, _("Added bot '%s' with no address and %s%s%s.\n"), handle,
+            host[0] ? _("hostmask '") : _("no hostmask"), host[0] ? host : "",
             host[0] ? "'" : "");
   }
   if (host[0]) {
     addhost_by_handle(handle, host);
   } else if (!add_bot_hostmask(idx, handle)) {
-    dprintf(idx, "You'll want to add a hostmask if this bot will ever be on "
-            "any channels that I'm on.\n");
+    dprintf(idx, _("You'll want to add a hostmask if this bot will ever be on "
+            "any channels that I'm on.\n"));
   }
 }
 
@@ -848,39 +849,39 @@
   strncpyz(newhand, newsplit(&par), sizeof newhand);
 
   if (!hand[0] || !newhand[0]) {
-    dprintf(idx, "Usage: chhandle <oldhandle> <newhandle>\n");
+    dprintf(idx, _("Usage: chhandle <oldhandle> <newhandle>\n"));
     return;
   }
   for (i = 0; i < strlen(newhand); i++)
     if (((unsigned char) newhand[i] <= 32) || (newhand[i] == '@'))
       newhand[i] = '?';
   if (strchr(BADHANDCHARS, newhand[0]) != NULL)
-    dprintf(idx, "Bizarre quantum forces prevent nicknames from starting with "
-            "'%c'.\n", newhand[0]);
+    dprintf(idx, _("Bizarre quantum forces prevent nicknames from starting "
+            "with '%c'.\n"), newhand[0]);
   else if (get_user_by_handle(userlist, newhand) &&
            egg_strcasecmp(hand, newhand))
-    dprintf(idx, "Somebody is already using %s.\n", newhand);
+    dprintf(idx, _("Somebody is already using %s.\n"), newhand);
   else {
     u2 = get_user_by_handle(userlist, hand);
     atr2 = u2 ? u2->flags : 0;
     if ((atr & USER_BOTMAST) && !(atr & USER_MASTER) && !(atr2 & USER_BOT))
-      dprintf(idx, "You can't change handles for non-bots.\n");
+      dprintf(idx, _("You can't change handles for non-bots.\n"));
     else if ((bot_flags(u2) & BOT_SHARE) && !(atr & USER_OWNER))
-      dprintf(idx, "You can't change share bot's nick.\n");
+      dprintf(idx, _("You can't change share bot's nick.\n"));
     else if ((atr2 & USER_OWNER) && !(atr & USER_OWNER) &&
              egg_strcasecmp(dcc[idx].nick, hand))
-      dprintf(idx, "You can't change a bot owner's handle.\n");
+      dprintf(idx, _("You can't change a bot owner's handle.\n"));
     else if (isowner(hand) && egg_strcasecmp(dcc[idx].nick, hand))
-      dprintf(idx, "You can't change a permanent bot owner's handle.\n");
+      dprintf(idx, _("You can't change a permanent bot owner's handle.\n"));
     else if (!egg_strcasecmp(newhand, botnetnick) && (!(atr2 & USER_BOT) ||
              nextbot(hand) != -1))
-      dprintf(idx, "Hey! That's MY name!\n");
+      dprintf(idx, _("Hey! That's MY name!\n"));
     else if (change_handle(u2, newhand)) {
       putlog(LOG_CMDS, "*", "#%s# chhandle %s %s", dcc[idx].nick,
              hand, newhand);
-      dprintf(idx, "Changed.\n");
+      dprintf(idx, _("Changed.\n"));
     } else
-      dprintf(idx, "Failed.\n");
+      dprintf(idx, _("Failed.\n"));
   }
 }
 
@@ -892,28 +893,27 @@
   strncpyz(newhandle, newsplit(&par), sizeof newhandle);
 
   if (!newhandle[0]) {
-    dprintf(idx, "Usage: handle <new-handle>\n");
+    dprintf(idx, _("Usage: handle <new-handle>\n"));
     return;
   }
   for (i = 0; i < strlen(newhandle); i++)
     if (((unsigned char) newhandle[i] <= 32) || (newhandle[i] == '@'))
       newhandle[i] = '?';
   if (strchr(BADHANDCHARS, newhandle[0]) != NULL)
-    dprintf(idx,
-            "Bizarre quantum forces prevent handle from starting with '%c'.\n",
-            newhandle[0]);
+    dprintf(idx, _("Bizarre quantum forces prevent handle from starting "
+            "with '%c'.\n"), newhandle[0]);
   else if (get_user_by_handle(userlist, newhandle) &&
            egg_strcasecmp(dcc[idx].nick, newhandle))
-    dprintf(idx, "Somebody is already using %s.\n", newhandle);
+    dprintf(idx, _("Somebody is already using %s.\n"), newhandle);
   else if (!egg_strcasecmp(newhandle, botnetnick))
-    dprintf(idx, "Hey!  That's MY name!\n");
+    dprintf(idx, _("Hey!  That's MY name!\n"));
   else {
     strncpyz(oldhandle, dcc[idx].nick, sizeof oldhandle);
     if (change_handle(u, newhandle)) {
       putlog(LOG_CMDS, "*", "#%s# handle %s", oldhandle, newhandle);
-      dprintf(idx, "Okay, changed.\n");
+      dprintf(idx, _("Okay, changed.\n"));
     } else
-      dprintf(idx, "Failed.\n");
+      dprintf(idx, _("Failed.\n"));
   }
 }
 
@@ -923,37 +923,37 @@
   int atr = u ? u->flags : 0, l;
 
   if (!par[0])
-    dprintf(idx, "Usage: chpass <handle> [password]\n");
+    dprintf(idx, _("Usage: chpass <handle> [password]\n"));
   else {
     handle = newsplit(&par);
     u = get_user_by_handle(userlist, handle);
     if (!u)
-      dprintf(idx, "No such user.\n");
+      dprintf(idx, _("No such user.\n"));
     else if ((atr & USER_BOTMAST) && !(atr & USER_MASTER) &&
              !(u->flags & USER_BOT))
-      dprintf(idx, "You can't change passwords for non-bots.\n");
+      dprintf(idx, _("You can't change passwords for non-bots.\n"));
     else if ((bot_flags(u) & BOT_SHARE) && !(atr & USER_OWNER))
-      dprintf(idx, "You can't change a share bot's password.\n");
+      dprintf(idx, _("You can't change a share bot's password.\n"));
     else if ((u->flags & USER_OWNER) && !(atr & USER_OWNER) &&
              egg_strcasecmp(handle, dcc[idx].nick))
-      dprintf(idx, "You can't change a bot owner's password.\n");
+      dprintf(idx, _("You can't change a bot owner's password.\n"));
     else if (isowner(handle) && egg_strcasecmp(dcc[idx].nick, handle))
-      dprintf(idx, "You can't change a permanent bot owner's password.\n");
+      dprintf(idx, _("You can't change a permanent bot owner's password.\n"));
     else if (!par[0]) {
       putlog(LOG_CMDS, "*", "#%s# chpass %s [nothing]", dcc[idx].nick, handle);
       set_user(&USERENTRY_PASS, u, NULL);
-      dprintf(idx, "Removed password.\n");
+      dprintf(idx, _("Removed password.\n"));
     } else {
       l = strlen(new = newsplit(&par));
       if (l > 16)
         new[16] = 0;
       if (l < 6)
-        dprintf(idx, "Please use at least 6 characters.\n");
+        dprintf(idx, _("Please use at least 6 characters.\n"));
       else {
         set_user(&USERENTRY_PASS, u, new);
         putlog(LOG_CMDS, "*", "#%s# chpass %s [something]", dcc[idx].nick,
                handle);
-        dprintf(idx, "Changed password.\n");
+        dprintf(idx, _("Changed password.\n"));
       }
     }
   }
@@ -965,26 +965,26 @@
   char *new;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: fprint <newfingerprint|+>\n");
+    dprintf(idx, _("Usage: fprint <newfingerprint|+>\n"));
     return;
   }
   new = newsplit(&par);
   if (!strcmp(new, "+")) {
     if (!dcc[idx].ssl) {
-      dprintf(idx, "You aren't connected with SSL. "
-              "Please set your fingerprint manually.\n");
+      dprintf(idx, _("You aren't connected with SSL. "
+              "Please set your fingerprint manually.\n"));
       return;
     } else if (!(new = ssl_getfp(dcc[idx].sock))) {
-      dprintf(idx, "Can't get your current fingerprint. "
-              "Set up you client to send a certificate!\n");
+      dprintf(idx, _("Can't get your current fingerprint. "
+              "Set up you client to send a certificate!\n"));
       return;
     }
   }
   if (set_user(&USERENTRY_FPRINT, u, new)) {
     putlog(LOG_CMDS, "*", "#%s# fprint...", dcc[idx].nick);
-    dprintf(idx, "Changed fingerprint to '%s'.\n", new);
+    dprintf(idx, _("Changed fingerprint to '%s'.\n"), new);
   } else
-    dprintf(idx, "Invalid fingerprint. Must be a hexadecimal string.\n");
+    dprintf(idx, _("Invalid fingerprint. Must be a hexadecimal string.\n"));
 }
 
 static void cmd_chfinger(struct userrec *u, int idx, char *par)
@@ -993,34 +993,35 @@
   int atr = u ? u->flags : 0;
 
   if (!par[0])
-    dprintf(idx, "Usage: chfinger <handle> [fingerprint]\n");
+    dprintf(idx, _("Usage: chfinger <handle> [fingerprint]\n"));
   else {
     handle = newsplit(&par);
     u = get_user_by_handle(userlist, handle);
     if (!u)
-      dprintf(idx, "No such user.\n");
+      dprintf(idx, _("No such user.\n"));
     else if ((atr & USER_BOTMAST) && !(atr & USER_MASTER) &&
              !(u->flags & USER_BOT))
-      dprintf(idx, "You can't change fingerprints for non-bots.\n");
+      dprintf(idx, _("You can't change fingerprints for non-bots.\n"));
     else if ((bot_flags(u) & BOT_SHARE) && !(atr & USER_OWNER))
-      dprintf(idx, "You can't change a share bot's fingerprint.\n");
+      dprintf(idx, _("You can't change a share bot's fingerprint.\n"));
     else if ((u->flags & USER_OWNER) && !(atr & USER_OWNER) &&
              egg_strcasecmp(handle, dcc[idx].nick))
-      dprintf(idx, "You can't change a bot owner's fingerprint.\n");
+      dprintf(idx, _("You can't change a bot owner's fingerprint.\n"));
     else if (isowner(handle) && egg_strcasecmp(dcc[idx].nick, handle))
-      dprintf(idx, "You can't change a permanent bot owner's fingerprint.\n");
+      dprintf(idx, _("You can't change a permanent bot owner's "
+              "fingerprint.\n"));
     else if (!par[0]) {
       putlog(LOG_CMDS, "*", "#%s# chfinger %s [nothing]", dcc[idx].nick, handle);
       set_user(&USERENTRY_FPRINT, u, NULL);
-      dprintf(idx, "Removed fingerprint.\n");
+      dprintf(idx, _("Removed fingerprint.\n"));
     } else {
       new = newsplit(&par);
       if (set_user(&USERENTRY_FPRINT, u, new)) {
         putlog(LOG_CMDS, "*", "#%s# chfinger %s %s", dcc[idx].nick,
                handle, new);
-        dprintf(idx, "Changed fingerprint.\n");
+        dprintf(idx, _("Changed fingerprint.\n"));
       } else 
-        dprintf(idx, "Invalid fingerprint. Must be a hexadecimal string.\n");
+        dprintf(idx, _("Invalid fingerprint. Must be a hexadecimal string.\n"));
     }
   }
 }
@@ -1038,8 +1039,8 @@
 
   handle = newsplit(&par);
   if (!par[0]) {
-    dprintf(idx, "Usage: chaddr <botname> <address> "
-            "[telnet-port[/relay-port]]>\n");
+    dprintf(idx, _("Usage: chaddr <botname> <address> "
+            "[telnet-port[/relay-port]]>\n"));
     return;
   }
   addr = newsplit(&par);
@@ -1048,16 +1049,16 @@
     addr[UHOSTMAX] = 0;
   u1 = get_user_by_handle(userlist, handle);
   if (!u1 || !(u1->flags & USER_BOT)) {
-    dprintf(idx, "This command is only useful for tandem bots.\n");
+    dprintf(idx, _("This command is only useful for tandem bots.\n"));
     return;
   }
   if ((bot_flags(u1) & BOT_SHARE) && (!u || !(u->flags & USER_OWNER))) {
-    dprintf(idx, "You can't change a share bot's address.\n");
+    dprintf(idx, _("You can't change a share bot's address.\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# chaddr %s %s%s%s", dcc[idx].nick, handle,
          addr, *port ? " " : "", port);
-  dprintf(idx, "Changed bot's address.\n");
+  dprintf(idx, _("Changed bot's address.\n"));
 
   bi = (struct bot_addr *) get_user(&USERENTRY_BOTADDR, u1);
   if (bi) {
@@ -1112,26 +1113,26 @@
 
   handle = newsplit(&par);
   if (!par[0]) {
-    dprintf(idx, "Usage: comment <handle> <newcomment>\n");
+    dprintf(idx, _("Usage: comment <handle> <newcomment>\n"));
     return;
   }
   u1 = get_user_by_handle(userlist, handle);
   if (!u1) {
-    dprintf(idx, "No such user!\n");
+    dprintf(idx, _("No such user!\n"));
     return;
   }
   if ((u1->flags & USER_OWNER) && !(u && (u->flags & USER_OWNER)) &&
       egg_strcasecmp(handle, dcc[idx].nick)) {
-    dprintf(idx, "You can't change comment on a bot owner.\n");
+    dprintf(idx, _("You can't change comment on a bot owner.\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# comment %s %s", dcc[idx].nick, handle, par);
   if (!egg_strcasecmp(par, "none")) {
-    dprintf(idx, "Okay, comment blanked.\n");
+    dprintf(idx, _("Okay, comment blanked.\n"));
     set_user(&USERENTRY_COMMENT, u1, NULL);
     return;
   }
-  dprintf(idx, "Changed comment.\n");
+  dprintf(idx, _("Changed comment.\n"));
   set_user(&USERENTRY_COMMENT, u1, par);
 }
 
@@ -1139,16 +1140,17 @@
 {
   putlog(LOG_CMDS, "*", "#%s# restart", dcc[idx].nick);
   if (!backgrd) {
-    dprintf(idx, "You cannot .restart a bot when running -n (due to Tcl).\n");
+    dprintf(idx, _("You cannot .restart a bot when running -n (due to Tcl).\n"));
     return;
   }
-  dprintf(idx, "Restarting.\n");
+  dprintf(idx, _("Restarting.\n"));
   if (make_userfile) {
-    putlog(LOG_MISC, "*", "Uh, guess you don't need to create a new userfile.");
+    putlog(LOG_MISC, "*", _("Uh, guess you don't need to create a new "
+           "userfile."));
     make_userfile = 0;
   }
   write_userfile(-1);
-  putlog(LOG_MISC, "*", "Restarting ...");
+  putlog(LOG_MISC, "*", _("Restarting ..."));
   wipe_timers(interp, &utimer);
   wipe_timers(interp, &timer);
   do_restart = idx;
@@ -1157,20 +1159,21 @@
 static void cmd_rehash(struct userrec *u, int idx, char *par)
 {
   putlog(LOG_CMDS, "*", "#%s# rehash", dcc[idx].nick);
-  dprintf(idx, "Rehashing.\n");
+  dprintf(idx, _("Rehashing.\n"));
   if (make_userfile) {
-    putlog(LOG_MISC, "*", "Uh, guess you don't need to create a new userfile.");
+    putlog(LOG_MISC, "*", _("Uh, guess you don't need to create a new "
+           "userfile."));
     make_userfile = 0;
   }
   write_userfile(-1);
-  putlog(LOG_MISC, "*", "Rehashing ...");
+  putlog(LOG_MISC, "*", _("Rehashing ..."));
   do_restart = -2;
 }
 
 static void cmd_reload(struct userrec *u, int idx, char *par)
 {
   putlog(LOG_CMDS, "*", "#%s# reload", dcc[idx].nick);
-  dprintf(idx, "Reloading user file...\n");
+  dprintf(idx, _("Reloading user file...\n"));
   reload();
 }
 
@@ -1180,14 +1183,14 @@
 
   putlog(LOG_CMDS, "*", "#%s# die %s", dcc[idx].nick, par);
   if (par[0]) {
-    egg_snprintf(s1, sizeof s1, "BOT SHUTDOWN (%s: %s)", dcc[idx].nick, par);
-    egg_snprintf(s2, sizeof s2, "DIE BY %s!%s (%s)", dcc[idx].nick,
+    egg_snprintf(s1, sizeof s1, _("BOT SHUTDOWN (%s: %s)"), dcc[idx].nick, par);
+    egg_snprintf(s2, sizeof s2, _("DIE BY %s!%s (%s)"), dcc[idx].nick,
                  dcc[idx].host, par);
     strncpyz(quit_msg, par, 1024);
   } else {
-    egg_snprintf(s1, sizeof s1, "BOT SHUTDOWN (Authorized by %s)",
+    egg_snprintf(s1, sizeof s1, _("BOT SHUTDOWN (Authorized by %s)"),
                  dcc[idx].nick);
-    egg_snprintf(s2, sizeof s2, "DIE BY %s!%s (request)", dcc[idx].nick,
+    egg_snprintf(s2, sizeof s2, _("DIE BY %s!%s (request)"), dcc[idx].nick,
                  dcc[idx].host);
     strncpyz(quit_msg, dcc[idx].nick, 1024);
   }
@@ -1212,11 +1215,11 @@
 
   nick = newsplit(&par);
   if (!par[0]) {
-    dprintf(idx, "Usage: simul <hand> <text>\n");
+    dprintf(idx, _("Usage: simul <hand> <text>\n"));
     return;
   }
   if (isowner(nick)) {
-    dprintf(idx, "Unable to '.simul' permanent owners.\n");
+    dprintf(idx, _("Unable to '.simul' permanent owners.\n"));
     return;
   }
   for (i = 0; i < dcc_total; i++)
@@ -1229,7 +1232,7 @@
       }
     }
   if (!ok)
-    dprintf(idx, "No such user on the party line.\n");
+    dprintf(idx, _("No such user on the party line.\n"));
 }
 
 static void cmd_link(struct userrec *u, int idx, char *par)
@@ -1238,7 +1241,7 @@
   int i;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: link [some-bot] <new-bot>\n");
+    dprintf(idx, _("Usage: link [some-bot] <new-bot>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# link %s", dcc[idx].nick, par);
@@ -1250,7 +1253,7 @@
 
     i = nextbot(s);
     if (i < 0) {
-      dprintf(idx, "No such bot online.\n");
+      dprintf(idx, _("No such bot online.\n"));
       return;
     }
     simple_sprintf(x, "%d:%s@%s", dcc[idx].sock, dcc[idx].nick, botnetnick);
@@ -1264,7 +1267,7 @@
   char *bot;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: unlink <bot> [reason]\n");
+    dprintf(idx, _("Usage: unlink <bot> [reason]\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# unlink %s", dcc[idx].nick, par);
@@ -1290,7 +1293,7 @@
 static void cmd_relay(struct userrec *u, int idx, char *par)
 {
   if (!par[0]) {
-    dprintf(idx, "Usage: relay <bot>\n");
+    dprintf(idx, _("Usage: relay <bot>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# relay %s", dcc[idx].nick, par);
@@ -1300,14 +1303,14 @@
 static void cmd_save(struct userrec *u, int idx, char *par)
 {
   putlog(LOG_CMDS, "*", "#%s# save", dcc[idx].nick);
-  dprintf(idx, "Saving user file...\n");
+  dprintf(idx, _("Saving user file...\n"));
   write_userfile(-1);
 }
 
 static void cmd_backup(struct userrec *u, int idx, char *par)
 {
   putlog(LOG_CMDS, "*", "#%s# backup", dcc[idx].nick);
-  dprintf(idx, "Backing up the channel & user files...\n");
+  dprintf(idx, _("Backing up the channel & user files...\n"));
   call_hook(HOOK_BACKUP);
 }
 
@@ -1317,16 +1320,16 @@
   char x[NOTENAMELEN + 11], y[11];
 
   if (!par[0]) {
-    dprintf(idx, "Usage: trace <botname>\n");
+    dprintf(idx, _("Usage: trace <botname>\n"));
     return;
   }
   if (!egg_strcasecmp(par, botnetnick)) {
-    dprintf(idx, "That's me!  Hiya! :)\n");
+    dprintf(idx, _("That's me!  Hiya! :)\n"));
     return;
   }
   i = nextbot(par);
   if (i < 0) {
-    dprintf(idx, "Unreachable bot.\n");
+    dprintf(idx, _("Unreachable bot.\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# trace %s", dcc[idx].nick, par);
@@ -1347,10 +1350,10 @@
   int i;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: banner <message>\n");
+    dprintf(idx, _("Usage: banner <message>\n"));
     return;
   }
-  simple_sprintf(s, "\007### Botwide: [%s] %s\n", dcc[idx].nick, par);
+  simple_sprintf(s, _("\007### Botwide: [%s] %s\n"), dcc[idx].nick, par);
   for (i = 0; i < dcc_total; i++)
     if (dcc[i].type->flags & DCT_MASTER)
       dprintf(i, "%s", s);
@@ -1380,29 +1383,29 @@
         botnet_send_join_idx(i, -1);
       }
       if ((oatr & USER_MASTER) && !(u->flags & USER_MASTER)) {
-        dprintf(i, "*** POOF! ***\n");
-        dprintf(i, "You are no longer a master on this bot.\n");
+        dprintf(i, _("*** POOF! ***\n"));
+        dprintf(i, _("You are no longer a master on this bot.\n"));
       }
       if (!(oatr & USER_MASTER) && (u->flags & USER_MASTER)) {
         dcc[i].u.chat->con_flags |= conmask;
-        dprintf(i, "*** POOF! ***\n");
-        dprintf(i, "You are now a master on this bot.\n");
+        dprintf(i, _("*** POOF! ***\n"));
+        dprintf(i, _("You are now a master on this bot.\n"));
       }
       if (!(oatr & USER_BOTMAST) && (u->flags & USER_BOTMAST)) {
-        dprintf(i, "### POOF! ###\n");
-        dprintf(i, "You are now a botnet master on this bot.\n");
+        dprintf(i, _("### POOF! ###\n"));
+        dprintf(i, _("You are now a botnet master on this bot.\n"));
       }
       if ((oatr & USER_BOTMAST) && !(u->flags & USER_BOTMAST)) {
-        dprintf(i, "### POOF! ###\n");
-        dprintf(i, "You are no longer a botnet master on this bot.\n");
+        dprintf(i, _("### POOF! ###\n"));
+        dprintf(i, _("You are no longer a botnet master on this bot.\n"));
       }
       if (!(oatr & USER_OWNER) && (u->flags & USER_OWNER)) {
-        dprintf(i, "@@@ POOF! @@@\n");
-        dprintf(i, "You are now an OWNER of this bot.\n");
+        dprintf(i, _("@@@ POOF! @@@\n"));
+        dprintf(i, _("You are now an OWNER of this bot.\n"));
       }
       if ((oatr & USER_OWNER) && !(u->flags & USER_OWNER)) {
-        dprintf(i, "@@@ POOF! @@@\n");
-        dprintf(i, "You are no longer an owner of this bot.\n");
+        dprintf(i, _("@@@ POOF! @@@\n"));
+        dprintf(i, _("You are no longer an owner of this bot.\n"));
       }
       get_user_flagrec(u, &fr, dcc[i].u.chat->con_chan);
       dcc[i].u.chat->con_flags = check_conflags(&fr,
@@ -1427,9 +1430,9 @@
        */
       if ((dcc[i].type->flags & DCT_FILES) && !(u->flags & USER_XFER) &&
           !(u->flags & USER_MASTER)) {
-        dprintf(i, "-+- POOF! -+-\n");
-        dprintf(i, "You no longer have file area access.\n\n");
-        putlog(LOG_MISC, "*", "DCC user [%s]%s removed from file system",
+        dprintf(i, _("-+- POOF! -+-\n"));
+        dprintf(i, _("You no longer have file area access.\n\n"));
+        putlog(LOG_MISC, "*", _("DCC user [%s]%s removed from file system"),
                dcc[i].nick, dcc[i].host);
         if (dcc[i].status & STAT_CHAT) {
           struct chat_info *ci;
@@ -1441,7 +1444,7 @@
           dcc[i].type = &DCC_CHAT;
           if (dcc[i].u.chat->channel >= 0) {
             chanout_but(-1, dcc[i].u.chat->channel,
-                        "*** %s has returned.\n", dcc[i].nick);
+                        _("*** %s has returned.\n"), dcc[i].nick);
             if (dcc[i].u.chat->channel < GLOBAL_CHANS)
               botnet_send_join_idx(i, -1);
           }
@@ -1480,21 +1483,21 @@
           (ochatr & (USER_OP | USER_MASTER | USER_OWNER))))
         botnet_send_join_idx(i, -1);
       if ((ochatr & USER_MASTER) && !(chflags & USER_MASTER)) {
-        dprintf(i, "*** POOF! ***\n");
-        dprintf(i, "You are no longer a master on %s.\n", chname);
+        dprintf(i, _("*** POOF! ***\n"));
+        dprintf(i, _("You are no longer a master on %s.\n"), chname);
       }
       if (!(ochatr & USER_MASTER) && (chflags & USER_MASTER)) {
         dcc[i].u.chat->con_flags |= conmask;
-        dprintf(i, "*** POOF! ***\n");
-        dprintf(i, "You are now a master on %s.\n", chname);
+        dprintf(i, _("*** POOF! ***\n"));
+        dprintf(i, _("You are now a master on %s.\n"), chname);
       }
       if (!(ochatr & USER_OWNER) && (chflags & USER_OWNER)) {
-        dprintf(i, "@@@ POOF! @@@\n");
-        dprintf(i, "You are now an OWNER of %s.\n", chname);
+        dprintf(i, _("@@@ POOF! @@@\n"));
+        dprintf(i, _("You are now an OWNER of %s.\n"), chname);
       }
       if ((ochatr & USER_OWNER) && !(chflags & USER_OWNER)) {
-        dprintf(i, "@@@ POOF! @@@\n");
-        dprintf(i, "You are no longer an owner of %s.\n", chname);
+        dprintf(i, _("@@@ POOF! @@@\n"));
+        dprintf(i, _("You are no longer an owner of %s.\n"), chname);
       }
       if (((ochatr & (USER_OP | USER_MASTER | USER_OWNER)) &&
           (!(chflags & (USER_OP | USER_MASTER | USER_OWNER)))) ||
@@ -1534,13 +1537,13 @@
   int fl = -1, of = 0, ocf = 0;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: chattr <handle> [changes] [channel]\n");
+    dprintf(idx, _("Usage: chattr <handle> [changes] [channel]\n"));
     return;
   }
   hand = newsplit(&par);
   u2 = get_user_by_handle(userlist, hand);
   if (!u2) {
-    dprintf(idx, "No such user!\n");
+    dprintf(idx, _("No such user!\n"));
     return;
   }
 
@@ -1571,7 +1574,7 @@
    */
   Assert(!(!arg && chan));
   if (arg && !chan) {
-    dprintf(idx, "No channel record for %s.\n", arg);
+    dprintf(idx, _("No channel record for %s.\n"), arg);
     return;
   }
   if (chg) {
@@ -1582,7 +1585,7 @@
       else
         chan = findchan_by_dname(arg);
       if (arg && !chan) {
-        dprintf(idx, "Invalid console channel %s.\n", arg);
+        dprintf(idx, _("Invalid console channel %s.\n"), arg);
         return;
       }
     } else if (arg && !strpbrk(chg, "&|")) {
@@ -1598,14 +1601,14 @@
     user.match |= FR_CHAN;
   get_user_flagrec(u, &user, chan ? chan->dname : 0);
   if (!chan && !glob_botmast(user)) {
-    dprintf(idx, "You do not have Bot Master privileges.\n");
+    dprintf(idx, _("You do not have Bot Master privileges.\n"));
     if (tmpchg)
       nfree(tmpchg);
     return;
   }
   if (chan && !glob_master(user) && !chan_master(user)) {
-    dprintf(idx, "You do not have channel master privileges for channel %s.\n",
-            par);
+    dprintf(idx, _("You do not have channel master privileges for "
+            "channel %s.\n"), par);
     if (tmpchg)
       nfree(tmpchg);
     return;
@@ -1691,10 +1694,10 @@
       check_dcc_chanattrs(u2, chan->dname, user.chan, ocf);
     build_flags(work, &user, NULL);
     if (work[0] != '-')
-      dprintf(idx, "Channel flags for %s on %s are now +%s.\n", hand,
+      dprintf(idx, _("Channel flags for %s on %s are now +%s.\n"), hand,
               chan->dname, work);
     else
-      dprintf(idx, "No flags for %s on %s.\n", hand, chan->dname);
+      dprintf(idx, _("No flags for %s on %s.\n"), hand, chan->dname);
   }
   if (chg && (me = module_find("irc", 0, 0))) {
     Function *func = me->funcs;
@@ -1715,13 +1718,13 @@
   int idx2;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: botattr <handle> [changes] [channel]\n");
+    dprintf(idx, _("Usage: botattr <handle> [changes] [channel]\n"));
     return;
   }
   hand = newsplit(&par);
   u2 = get_user_by_handle(userlist, hand);
   if (!u2 || !(u2->flags & USER_BOT)) {
-    dprintf(idx, "No such bot!\n");
+    dprintf(idx, _("No such bot!\n"));
     return;
   }
   for (idx2 = 0; idx2 < dcc_total; idx2++)
@@ -1730,7 +1733,7 @@
       break;
   if (idx2 != dcc_total) {
     dprintf(idx,
-            "You may not change the attributes of a directly linked bot.\n");
+            _("You may not change the attributes of a directly linked bot.\n"));
     return;
   }
   /* Parse args */
@@ -1760,7 +1763,7 @@
    */
   Assert(!(!arg && chan));
   if (arg && !chan) {
-    dprintf(idx, "No channel record for %s.\n", arg);
+    dprintf(idx, _("No channel record for %s.\n"), arg);
     return;
   }
   if (chg) {
@@ -1771,7 +1774,7 @@
       else
         chan = findchan_by_dname(arg);
       if (arg && !chan) {
-        dprintf(idx, "Invalid console channel %s.\n", arg);
+        dprintf(idx, _("Invalid console channel %s.\n"), arg);
         return;
       }
     } else if (arg && !strpbrk(chg, "&|")) {
@@ -1786,7 +1789,7 @@
   user.match = FR_GLOBAL;
   get_user_flagrec(u, &user, chan ? chan->dname : 0);
   if (!glob_botmast(user)) {
-    dprintf(idx, "You do not have Bot Master privileges.\n");
+    dprintf(idx, _("You do not have Bot Master privileges.\n"));
     if (tmpchg)
       nfree(tmpchg);
     return;
@@ -1831,9 +1834,9 @@
     get_user_flagrec(u2, &user, NULL);
     build_flags(work, &user, NULL);
     if (work[0] != '-')
-      dprintf(idx, "Bot flags for %s are now +%s.\n", hand, work);
+      dprintf(idx, _("Bot flags for %s are now +%s.\n"), hand, work);
     else
-      dprintf(idx, "There are no bot flags for %s.\n", hand);
+      dprintf(idx, _("There are no bot flags for %s.\n"), hand);
   }
   if (chan) {
     user.match = FR_CHAN;
@@ -1842,10 +1845,11 @@
     user.udef_chan = 0; /* udef chan flags are user only */
     build_flags(work, &user, NULL);
     if (work[0] != '-')
-      dprintf(idx, "Bot flags for %s on %s are now +%s.\n", hand,
+      dprintf(idx, _("Bot flags for %s on %s are now +%s.\n"), hand,
               chan->dname, work);
     else
-      dprintf(idx, "There are no bot flags for %s on %s.\n", hand, chan->dname);
+      dprintf(idx, _("There are no bot flags for %s on %s.\n"),
+              hand, chan->dname);
   }
   if (tmpchg)
     nfree(tmpchg);
@@ -1861,14 +1865,14 @@
   if (!egg_strcasecmp(arg, "off")) {
     /* Turn chat off */
     if (dcc[idx].u.chat->channel < 0) {
-      dprintf(idx, "You weren't in chat anyway!\n");
+      dprintf(idx, _("You weren't in chat anyway!\n"));
       return;
     } else {
-      dprintf(idx, "Leaving chat mode...\n");
+      dprintf(idx, _("Leaving chat mode...\n"));
       check_tcl_chpt(botnetnick, dcc[idx].nick, dcc[idx].sock,
                      dcc[idx].u.chat->channel);
       chanout_but(-1, dcc[idx].u.chat->channel,
-                  "*** %s left the party line.\n", dcc[idx].nick);
+                  _("*** %s left the party line.\n"), dcc[idx].nick);
       if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
         botnet_send_part_idx(idx, "");
     }
@@ -1887,14 +1891,14 @@
             newchan = -1;
         }
         if (newchan < 0) {
-          dprintf(idx, "No channel exists by that name.\n");
+          dprintf(idx, _("No channel exists by that name.\n"));
           return;
         }
       } else
         newchan = GLOBAL_CHANS + atoi(arg + 1);
       if (newchan < GLOBAL_CHANS || newchan > 199999) {
-        dprintf(idx, "Channel number out of range: local channels must be "
-                "*0-*99999.\n");
+        dprintf(idx, _("Channel number out of range: local channels must be "
+                "*0-*99999.\n"));
         return;
       }
     } else {
@@ -1910,14 +1914,14 @@
             newchan = -1;
         }
         if (newchan < 0) {
-          dprintf(idx, "No channel exists by that name.\n");
+          dprintf(idx, _("No channel exists by that name.\n"));
           return;
         }
       } else
         newchan = atoi(arg);
       if ((newchan < 0) || (newchan >= GLOBAL_CHANS)) {
-        dprintf(idx, "Channel number out of range: must be between 0 and %d."
-                "\n", GLOBAL_CHANS);
+        dprintf(idx, _("Channel number out of range: must be between 0 and %d."
+                "\n"), GLOBAL_CHANS);
         return;
       }
     }
@@ -1928,10 +1932,10 @@
       not_away(idx);
     if (dcc[idx].u.chat->channel == newchan) {
       if (!newchan) {
-        dprintf(idx, "You're already on the party line!\n");
+        dprintf(idx, _("You're already on the party line!\n"));
         return;
       } else {
-        dprintf(idx, "You're already on channel %s%d!\n",
+        dprintf(idx, _("You're already on channel %s%d!\n"),
                 (newchan < GLOBAL_CHANS) ? "" : "*", newchan % GLOBAL_CHANS);
         return;
       }
@@ -1940,16 +1944,18 @@
       if (oldchan >= 0)
         check_tcl_chpt(botnetnick, dcc[idx].nick, dcc[idx].sock, oldchan);
       if (!oldchan)
-        chanout_but(-1, 0, "*** %s left the party line.\n", dcc[idx].nick);
+        chanout_but(-1, 0, _("*** %s left the party line.\n"), dcc[idx].nick);
       else if (oldchan > 0)
-        chanout_but(-1, oldchan, "*** %s left the channel.\n", dcc[idx].nick);
+        chanout_but(-1, oldchan, _("*** %s left the channel.\n"),
+                    dcc[idx].nick);
       dcc[idx].u.chat->channel = newchan;
       if (!newchan) {
-        dprintf(idx, "Entering the party line...\n");
-        chanout_but(-1, 0, "*** %s joined the party line.\n", dcc[idx].nick);
+        dprintf(idx, _("Entering the party line...\n"));
+        chanout_but(-1, 0, _("*** %s joined the party line.\n"), dcc[idx].nick);
       } else {
-        dprintf(idx, "Joining channel '%s'...\n", arg);
-        chanout_but(-1, newchan, "*** %s joined the channel.\n", dcc[idx].nick);
+        dprintf(idx, _("Joining channel '%s'...\n"), arg);
+        chanout_but(-1, newchan, _("*** %s joined the channel.\n"),
+                    dcc[idx].nick);
       }
       check_tcl_chjn(botnetnick, dcc[idx].nick, newchan, geticon(idx),
                      dcc[idx].sock, dcc[idx].host);
@@ -1972,18 +1978,20 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Echo is currently %s.\n", dcc[idx].status & STAT_ECHO ?
-            "on" : "off");
+    if (dcc[idx].status & STAT_ECHO)
+      dprintf(idx, _("Echo is currently on.\n"));
+    else
+      dprintf(idx, _("Echo is currently off.\n"));
     return;
   }
   if (!egg_strcasecmp(par, "on")) {
-    dprintf(idx, "Echo turned on.\n");
+    dprintf(idx, _("Echo turned on.\n"));
     dcc[idx].status |= STAT_ECHO;
   } else if (!egg_strcasecmp(par, "off")) {
-    dprintf(idx, "Echo turned off.\n");
+    dprintf(idx, _("Echo turned off.\n"));
     dcc[idx].status &= ~STAT_ECHO;
   } else {
-    dprintf(idx, "Usage: echo <on/off>\n");
+    dprintf(idx, _("Usage: echo <on/off>\n"));
     return;
   }
   /* New style autosave here too -- rtc, 09/28/1999 */
@@ -2055,19 +2063,19 @@
 
   s[i] = 0;
   if (x & STRIP_BOLD)
-    i += my_strcpy(s + i, "bold, ");
+    i += my_strcpy(s + i, _("bold, "));
   if (x & STRIP_COLOR)
-    i += my_strcpy(s + i, "color, ");
+    i += my_strcpy(s + i, _("color, "));
   if (x & STRIP_REV)
-    i += my_strcpy(s + i, "reverse, ");
+    i += my_strcpy(s + i, _("reverse, "));
   if (x & STRIP_UNDER)
-    i += my_strcpy(s + i, "underline, ");
+    i += my_strcpy(s + i, _("underline, "));
   if (x & STRIP_ANSI)
-    i += my_strcpy(s + i, "ansi, ");
+    i += my_strcpy(s + i, _("ansi, "));
   if (x & STRIP_BELLS)
-    i += my_strcpy(s + i, "bells, ");
+    i += my_strcpy(s + i, _("bells, "));
   if (!i)
-    strcpy(s, "none");
+    strcpy(s, _("none"));
   else
     s[i - 2] = 0;
   return s;
@@ -2093,7 +2101,7 @@
         dest = i;
       }
     if (!ok) {
-      dprintf(idx, "No such user on the party line!\n");
+      dprintf(idx, _("No such user on the party line!\n"));
       return;
     }
     changes = par;
@@ -2128,14 +2136,14 @@
   else
     putlog(LOG_CMDS, "*", "#%s# strip %s", dcc[idx].nick, changes);
   if (dest == idx) {
-    dprintf(idx, "Your strip settings are: %s (%s).\n",
+    dprintf(idx, _("Your strip settings are: %s (%s).\n"),
             stripmasktype(dcc[idx].u.chat->strip_flags),
             stripmaskname(dcc[idx].u.chat->strip_flags));
   } else {
-    dprintf(idx, "Strip setting for %s: %s (%s).\n", dcc[dest].nick,
+    dprintf(idx, _("Strip setting for %s: %s (%s).\n"), dcc[dest].nick,
             stripmasktype(dcc[dest].u.chat->strip_flags),
             stripmaskname(dcc[dest].u.chat->strip_flags));
-    dprintf(dest, "%s set your strip settings to: %s (%s).\n", dcc[idx].nick,
+    dprintf(dest, _("%s set your strip settings to: %s (%s).\n"), dcc[idx].nick,
             stripmasktype(dcc[dest].u.chat->strip_flags),
             stripmaskname(dcc[dest].u.chat->strip_flags));
   }
@@ -2164,18 +2172,20 @@
   u = get_user_by_handle(userlist, par);
 
   if (!par[0])
-    dprintf(idx, "Usage: su <user>\n");
+    dprintf(idx, _("Usage: su <user>\n"));
   else if (!u)
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
   else if (u->flags & USER_BOT)
-    dprintf(idx, "You can't su to a bot... then again, why would you wanna?\n");
+    dprintf(idx, _("You can't su to a bot... then again, "
+            "why would you wanna?\n"));
   else if (dcc[idx].u.chat->su_nick)
-    dprintf(idx, "You cannot currently double .su; try .su'ing directly.\n");
+    dprintf(idx, _("You cannot currently double .su; "
+            "try .su'ing directly.\n"));
   else {
     get_user_flagrec(u, &fr, NULL);
     if ((!glob_party(fr) && (require_p || !(glob_op(fr) || chan_op(fr)))) &&
         !(atr & USER_BOTMAST))
-      dprintf(idx, "No party line access permitted for %s.\n", par);
+      dprintf(idx, _("No party line access permitted for %s.\n"), par);
     else {
       correct_handle(par);
       putlog(LOG_CMDS, "*", "#%s# su %s", dcc[idx].nick, par);
@@ -2183,13 +2193,14 @@
           !(isowner(dcc[idx].nick)))) {
         /* This check is only important for non-owners */
         if (u_pass_match(u, "-")) {
-          dprintf(idx, "No password set for user. You may not .su to them.\n");
+          dprintf(idx, _("No password set for user. You may not .su "
+                  "to them.\n"));
           return;
         }
         if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
           botnet_send_part_idx(idx, "");
         chanout_but(-1, dcc[idx].u.chat->channel,
-                    "*** %s left the party line.\n", dcc[idx].nick);
+                    _("*** %s left the party line.\n"), dcc[idx].nick);
         /* Store the old nick in the away section, for weenies who can't get
          * their password right ;)
          */
@@ -2202,7 +2213,7 @@
         dcc[idx].user = u;
         strcpy(dcc[idx].nick, par);
         /* Display password prompt and turn off echo (send IAC WILL ECHO). */
-        dprintf(idx, "Enter password for %s%s\n", par,
+        dprintf(idx, _("Enter password for %s%s\n"), par,
                 (dcc[idx].status & STAT_TELNET) ? TLN_IAC_C TLN_WILL_C
                 TLN_ECHO_C : "");
         dcc[idx].type = &DCC_CHAT_PASS;
@@ -2210,8 +2221,8 @@
         if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
           botnet_send_part_idx(idx, "");
         chanout_but(-1, dcc[idx].u.chat->channel,
-                    "*** %s left the party line.\n", dcc[idx].nick);
-        dprintf(idx, "Setting your username to %s.\n", par);
+                    _("*** %s left the party line.\n"), dcc[idx].nick);
+        dprintf(idx, _("Setting your username to %s.\n"), par);
         if (atr & USER_MASTER)
           dcc[idx].u.chat->con_flags = conmask;
         dcc[idx].u.chat->su_nick = get_data_ptr(strlen(dcc[idx].nick) + 1);
@@ -2229,12 +2240,12 @@
   if (dcc[idx].status & STAT_TELNET) {
     dcc[idx].status |= STAT_ECHO;
     dcc[idx].status &= ~STAT_TELNET;
-    dprintf(idx, "Turned off telnet codes.\n");
+    dprintf(idx, _("Turned off telnet codes.\n"));
     putlog(LOG_CMDS, "*", "#%s# fixcodes (telnet off)", dcc[idx].nick);
   } else {
     dcc[idx].status |= STAT_TELNET;
     dcc[idx].status &= ~STAT_ECHO;
-    dprintf(idx, "Turned on telnet codes.\n");
+    dprintf(idx, _("Turned on telnet codes.\n"));
     putlog(LOG_CMDS, "*", "#%s# fixcodes (telnet on)", dcc[idx].nick);
   }
 }
@@ -2246,10 +2257,10 @@
 
   if (!par[0]) {
     if (dcc[idx].status & STAT_PAGE) {
-      dprintf(idx, "Currently paging outputs to %d lines.\n",
+      dprintf(idx, _("Currently paging outputs to %d lines.\n"),
               dcc[idx].u.chat->max_line);
     } else
-      dprintf(idx, "You don't have paging on.\n");
+      dprintf(idx, _("You don't have paging on.\n"));
     return;
   }
   a = atoi(par);
@@ -2258,18 +2269,18 @@
     dcc[idx].u.chat->max_line = 0x7ffffff;      /* flush_lines needs this */
     while (dcc[idx].u.chat->buffer)
       flush_lines(idx, dcc[idx].u.chat);
-    dprintf(idx, "Paging turned off.\n");
+    dprintf(idx, _("Paging turned off.\n"));
     putlog(LOG_CMDS, "*", "#%s# page off", dcc[idx].nick);
   } else if (a > 0) {
-    dprintf(idx, "Paging turned on, stopping every %d line%s.\n", a,
-            (a != 1) ? "s" : "");
+    dprintf(idx, P_("Paging turned on, stopping every single line.\n",
+            "Paging turned on, stopping every %d lines.\n", a), a);
     dcc[idx].status |= STAT_PAGE;
     dcc[idx].u.chat->max_line = a;
     dcc[idx].u.chat->line_count = 0;
     dcc[idx].u.chat->current_lines = 0;
     putlog(LOG_CMDS, "*", "#%s# page %d", dcc[idx].nick, a);
   } else {
-    dprintf(idx, "Usage: page <off or #>\n");
+    dprintf(idx, _("Usage: page <off or #>\n"));
     return;
   }
   /* New style autosave here too -- rtc, 09/28/1999 */
@@ -2291,7 +2302,7 @@
 #endif
 
   if (!(isowner(dcc[idx].nick)) && (must_be_owner)) {
-    dprintf(idx, MISC_NOSUCHCMD);
+    dprintf(idx, _("What?  You need '.help'\n"));
     return;
   }
   debug1("tcl: evaluate (.tcl): %s", msg);
@@ -2310,7 +2321,7 @@
   if (code == TCL_OK)
     dumplots(idx, "Tcl: ", result);
   else
-    dumplots(idx, "Tcl error: ", result);
+    dumplots(idx, _("Tcl error: "), result);
 
 #ifdef USE_TCL_ENCODING
   Tcl_DStringFree(&dstr);
@@ -2328,7 +2339,7 @@
 #endif
 
   if (!(isowner(dcc[idx].nick)) && (must_be_owner)) {
-    dprintf(idx, MISC_NOSUCHCMD);
+    dprintf(idx, _("What?  You need '.help'\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# set %s", dcc[idx].nick, msg);
@@ -2336,7 +2347,7 @@
   if (!msg[0]) {
     strcpy(s, "info globals");
     Tcl_Eval(interp, s);
-    dumplots(idx, "Global vars: ", tcl_resultstring());
+    dumplots(idx, _("Global vars: "), tcl_resultstring());
     return;
   }
   strcpy(s + 4, msg);
@@ -2354,11 +2365,11 @@
 
   if (code == TCL_OK) {
     if (!strchr(msg, ' '))
-      dumplots(idx, "Currently: ", result);
+      dumplots(idx, _("Currently: "), result);
     else
-      dprintf(idx, "Ok, set.\n");
+      dprintf(idx, _("Ok, set.\n"));
   } else
-    dprintf(idx, "Error: %s\n", result);
+    dprintf(idx, _("Error: %s\n"), result);
 
 #ifdef USE_TCL_ENCODING
   Tcl_DStringFree(&dstr);
@@ -2376,18 +2387,18 @@
   const char *p;
 
   if (!(isowner(dcc[idx].nick)) && (must_be_owner)) {
-    dprintf(idx, MISC_NOSUCHCMD);
+    dprintf(idx, _("What?  You need '.help'\n"));
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "%s: loadmod <module>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: loadmod <module>\n"));
   } else {
     p = module_load(par);
     if (p)
-      dprintf(idx, "%s: %s %s\n", par, MOD_LOADERROR, p);
+      dprintf(idx, _("%s: Error loading module: %s\n"), par, p);
     else {
       putlog(LOG_CMDS, "*", "#%s# loadmod %s", dcc[idx].nick, par);
-      dprintf(idx, MOD_LOADED, par);
+      dprintf(idx, _("Module loaded: %-16s"), par);
       dprintf(idx, "\n");
     }
   }
@@ -2398,18 +2409,18 @@
   char *p;
 
   if (!(isowner(dcc[idx].nick)) && (must_be_owner)) {
-    dprintf(idx, MISC_NOSUCHCMD);
+    dprintf(idx, _("What?  You need '.help'\n"));
     return;
   }
   if (!par[0])
-    dprintf(idx, "%s: unloadmod <module>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: unloadmod <module>\n"));
   else {
     p = module_unload(par, dcc[idx].nick);
     if (p)
-      dprintf(idx, "%s %s: %s\n", MOD_UNLOADERROR, par, p);
+      dprintf(idx, _("Error unloading module: %s: %s\n"), par, p);
     else {
       putlog(LOG_CMDS, "*", "#%s# unloadmod %s", dcc[idx].nick, par);
-      dprintf(idx, "%s %s\n", MOD_UNLOADED, par);
+      dprintf(idx, _("Module unloaded: %s\n"), par);
     }
   }
 }
@@ -2420,7 +2431,7 @@
   unsigned long int expire_time = 0;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +ignore <hostmask> [%%<XdXhXm>] [comment]\n");
+    dprintf(idx, _("Usage: +ignore <hostmask> [%%<XdXhXm>] [comment]\n"));
     return;
   }
 
@@ -2478,9 +2489,9 @@
     strcpy(s, who);
 
   if (match_ignore(s))
-    dprintf(idx, "That already matches an existing ignore.\n");
+    dprintf(idx, _("That already matches an existing ignore.\n"));
   else {
-    dprintf(idx, "Now ignoring: %s (%s)\n", s, par);
+    dprintf(idx, _("Now ignoring: %s (%s)\n"), s, par);
     addignore(s, dcc[idx].nick, par, expire_time ? now + expire_time : 0L);
     putlog(LOG_CMDS, "*", "#%s# +ignore %s %s", dcc[idx].nick, s, par);
   }
@@ -2491,15 +2502,15 @@
   char buf[UHOSTLEN];
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -ignore <hostmask | ignore #>\n");
+    dprintf(idx, _("Usage: -ignore <hostmask | ignore #>\n"));
     return;
   }
   strncpyz(buf, par, sizeof buf);
   if (delignore(buf)) {
-    putlog(LOG_CMDS, "*", "#%s# -ignore %s", dcc[idx].nick, buf);
-    dprintf(idx, "No longer ignoring: %s\n", buf);
+    putlog(LOG_CMDS, "*", _("#%s# -ignore %s"), dcc[idx].nick, buf);
+    dprintf(idx, _("No longer ignoring: %s\n"), buf);
   } else
-    dprintf(idx, "That ignore cannot be found.\n");
+    dprintf(idx, _("That ignore cannot be found.\n"));
 }
 
 static void cmd_ignores(struct userrec *u, int idx, char *par)
@@ -2513,7 +2524,7 @@
   char *handle, *host;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +user <handle> [hostmask]\n");
+    dprintf(idx, _("Usage: +user <handle> [hostmask]\n"));
     return;
   }
   handle = newsplit(&par);
@@ -2521,16 +2532,20 @@
   if (strlen(handle) > HANDLEN)
     handle[HANDLEN] = 0;
   if (get_user_by_handle(userlist, handle))
-    dprintf(idx, "Someone already exists by that name.\n");
+    dprintf(idx, _("Someone already exists by that name.\n"));
   else if (strchr(BADNICKCHARS, handle[0]) != NULL)
-    dprintf(idx, "You can't start a nick with '%c'.\n", handle[0]);
+    dprintf(idx, _("You can't start a nick with '%c'.\n"), handle[0]);
   else if (!egg_strcasecmp(handle, botnetnick))
-    dprintf(idx, "Hey! That's MY name!\n");
+    dprintf(idx, _("Hey! That's MY name!\n"));
   else {
     putlog(LOG_CMDS, "*", "#%s# +user %s %s", dcc[idx].nick, handle, host);
     userlist = adduser(userlist, handle, host, "-", 0);
-    dprintf(idx, "Added %s (%s) with no password and no flags.\n", handle,
-            host[0] ? host : "no host");
+    if (host[0])
+      dprintf(idx, _("Added %s (%s) with no password and no flags.\n"),
+              handle, host);
+    else
+      dprintf(idx, _("Added %s (no host) with no password and no flags.\n"),
+              handle);
   }
 }
 
@@ -2542,26 +2557,26 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -user <hand>\n");
+    dprintf(idx, _("Usage: -user <hand>\n"));
     return;
   }
   handle = newsplit(&par);
   u2 = get_user_by_handle(userlist, handle);
   if (!u2 || !u) {
-    dprintf(idx, "No such user!\n");
+    dprintf(idx, _("No such user!\n"));
     return;
   }
   if (isowner(u2->handle)) {
-    dprintf(idx, "You can't remove a permanent bot owner!\n");
+    dprintf(idx, _("You can't remove a permanent bot owner!\n"));
     return;
   }
   if ((u2->flags & USER_OWNER) && !(u->flags & USER_OWNER)) {
-    dprintf(idx, "You can't remove a bot owner!\n");
+    dprintf(idx, _("You can't remove a bot owner!\n"));
     return;
   }
   if (u2->flags & USER_BOT) {
     if ((bot_flags(u2) & BOT_SHARE) && !(u->flags & USER_OWNER)) {
-      dprintf(idx, "You can't remove share bots.\n");
+      dprintf(idx, _("You can't remove share bots.\n"));
       return;
     }
     for (idx2 = 0; idx2 < dcc_total; idx2++)
@@ -2569,13 +2584,13 @@
           !egg_strcasecmp(dcc[idx2].nick, handle))
         break;
     if (idx2 != dcc_total) {
-      dprintf(idx, "You can't remove a directly linked bot.\n");
+      dprintf(idx, _("You can't remove a directly linked bot.\n"));
       return;
     }
   }
   if ((u->flags & USER_BOTMAST) && !(u->flags & USER_MASTER) &&
       !(u2->flags & USER_BOT)) {
-    dprintf(idx, "You can't remove users who aren't bots!\n");
+    dprintf(idx, _("You can't remove users who aren't bots!\n"));
     return;
   }
   if ((me = module_find("irc", 0, 0))) {
@@ -2585,9 +2600,9 @@
   }
   if (deluser(handle)) {
     putlog(LOG_CMDS, "*", "#%s# -user %s", dcc[idx].nick, handle);
-    dprintf(idx, "Deleted %s.\n", handle);
+    dprintf(idx, _("Deleted %s.\n"), handle);
   } else
-    dprintf(idx, "Failed.\n");
+    dprintf(idx, _("Failed.\n"));
 }
 
 static void cmd_pls_host(struct userrec *u, int idx, char *par)
@@ -2600,7 +2615,7 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +host [handle] <newhostmask>\n");
+    dprintf(idx, _("Usage: +host [handle] <newhostmask>\n"));
     return;
   }
 
@@ -2615,46 +2630,46 @@
     u2 = u;
   }
   if (!u2 || !u) {
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
     return;
   }
   get_user_flagrec(u, &fr, NULL);
   if (egg_strcasecmp(handle, dcc[idx].nick)) {
     get_user_flagrec(u2, &fr2, NULL);
     if (!glob_master(fr) && !glob_bot(fr2) && !chan_master(fr)) {
-      dprintf(idx, "You can't add hostmasks to non-bots.\n");
+      dprintf(idx, _("You can't add hostmasks to non-bots.\n"));
       return;
     }
     if (!glob_owner(fr) && glob_bot(fr2) && (bot_flags(u2) & BOT_SHARE)) {
-      dprintf(idx, "You can't add hostmasks to share bots.\n");
+      dprintf(idx, _("You can't add hostmasks to share bots.\n"));
       return;
     }
     if ((glob_owner(fr2) || glob_master(fr2)) && !glob_owner(fr)) {
-      dprintf(idx, "You can't add hostmasks to a bot owner/master.\n");
+      dprintf(idx, _("You can't add hostmasks to a bot owner/master.\n"));
       return;
     }
     if ((chan_owner(fr2) || chan_master(fr2)) && !glob_master(fr) &&
         !glob_owner(fr) && !chan_owner(fr)) {
-      dprintf(idx, "You can't add hostmasks to a channel owner/master.\n");
+      dprintf(idx, _("You can't add hostmasks to a channel owner/master.\n"));
       return;
     }
     if (!glob_botmast(fr) && !glob_master(fr) && !chan_master(fr)) {
-      dprintf(idx, "Permission denied.\n");
+      dprintf(idx, _("Permission denied.\n"));
       return;
     }
   }
   if (!glob_botmast(fr) && !chan_master(fr) && get_user_by_host(host)) {
-    dprintf(idx, "You cannot add a host matching another user!\n");
+    dprintf(idx, _("You cannot add a host matching another user!\n"));
     return;
   }
   for (q = get_user(&USERENTRY_HOSTS, u); q; q = q->next)
     if (!egg_strcasecmp(q->extra, host)) {
-      dprintf(idx, "That hostmask is already there.\n");
+      dprintf(idx, _("That hostmask is already there.\n"));
       return;
     }
   putlog(LOG_CMDS, "*", "#%s# +host %s %s", dcc[idx].nick, handle, host);
   addhost_by_handle(handle, host);
-  dprintf(idx, "Added '%s' to %s.\n", host, handle);
+  dprintf(idx, _("Added '%s' to %s.\n"), host, handle);
   if ((me = module_find("irc", 0, 0))) {
     Function *func = me->funcs;
 
@@ -2671,7 +2686,7 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -host [handle] <hostmask>\n");
+    dprintf(idx, _("Usage: -host [handle] <hostmask>\n"));
     return;
   }
   handle = newsplit(&par);
@@ -2684,7 +2699,7 @@
     u2 = u;
   }
   if (!u2 || !u) {
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
     return;
   }
 
@@ -2693,44 +2708,45 @@
   /* check to see if user is +d or +k and don't let them remove hosts */
   if (((glob_deop(fr) || glob_kick(fr)) && !glob_master(fr)) ||
       ((chan_deop(fr) || chan_kick(fr)) && !chan_master(fr))) {
-    dprintf(idx, "You can't remove hostmasks while having the +d or +k "
-            "flag.\n");
+    dprintf(idx, _("You can't remove hostmasks while having the +d or +k "
+            "flag.\n"));
     return;
   }
 
   if (egg_strcasecmp(handle, dcc[idx].nick)) {
     if (!glob_master(fr) && !glob_bot(fr2) && !chan_master(fr)) {
-      dprintf(idx, "You can't remove hostmasks from non-bots.\n");
+      dprintf(idx, _("You can't remove hostmasks from non-bots.\n"));
       return;
     }
     if (glob_bot(fr2) && (bot_flags(u2) & BOT_SHARE) && !glob_owner(fr)) {
-      dprintf(idx, "You can't remove hostmasks from a share bot.\n");
+      dprintf(idx, _("You can't remove hostmasks from a share bot.\n"));
       return;
     }
     if ((glob_owner(fr2) || glob_master(fr2)) && !glob_owner(fr)) {
-      dprintf(idx, "You can't remove hostmasks from a bot owner/master.\n");
+      dprintf(idx, _("You can't remove hostmasks from a bot owner/master.\n"));
       return;
     }
     if ((chan_owner(fr2) || chan_master(fr2)) && !glob_master(fr) &&
         !glob_owner(fr) && !chan_owner(fr)) {
-      dprintf(idx, "You can't remove hostmasks from a channel owner/master.\n");
+      dprintf(idx, _("You can't remove hostmasks from a channel "
+              "owner/master.\n"));
       return;
     }
     if (!glob_botmast(fr) && !glob_master(fr) && !chan_master(fr)) {
-      dprintf(idx, "Permission denied.\n");
+      dprintf(idx, _("Permission denied.\n"));
       return;
     }
   }
   if (delhost_by_handle(handle, host)) {
     putlog(LOG_CMDS, "*", "#%s# -host %s %s", dcc[idx].nick, handle, host);
-    dprintf(idx, "Removed '%s' from %s.\n", host, handle);
+    dprintf(idx, _("Removed '%s' from %s.\n"), host, handle);
     if ((me = module_find("irc", 0, 0))) {
       Function *func = me->funcs;
 
       (func[IRC_CHECK_THIS_USER]) (handle, 2, host);
     }
   } else
-    dprintf(idx, "Failed.\n");
+    dprintf(idx, _("Failed.\n"));
 }
 
 static void cmd_modules(struct userrec *u, int idx, char *par)
@@ -2742,17 +2758,17 @@
   putlog(LOG_CMDS, "*", "#%s# modules %s", dcc[idx].nick, par);
 
   if (!par[0]) {
-    dprintf(idx, "Modules loaded:\n");
+    dprintf(idx, _("Modules loaded:\n"));
     for (me = module_list; me; me = me->next)
-      dprintf(idx, "  Module: %s (v%d.%d)\n", me->name, me->major, me->minor);
-    dprintf(idx, "End of modules list.\n");
+      dprintf(idx, _("  Module: %s (v%d.%d)\n"), me->name, me->major, me->minor);
+    dprintf(idx, _("End of modules list.\n"));
   } else {
     bot = newsplit(&par);
     if ((ptr = nextbot(bot)) >= 0)
       dprintf(ptr, "v %s %s %d:%s\n", botnetnick, bot, dcc[idx].sock,
               dcc[idx].nick);
     else
-      dprintf(idx, "No such bot online.\n");
+      dprintf(idx, _("No such bot online.\n"));
   }
 }
 
@@ -2760,63 +2776,63 @@
 {
   unsigned long itmp, itmp2;
 
-  dprintf(idx, "Traffic since last restart\n");
+  dprintf(idx, _("Traffic since last restart\n"));
   dprintf(idx, "==========================\n");
   if (otraffic_irc > 0 || itraffic_irc > 0 || otraffic_irc_today > 0 ||
       itraffic_irc_today > 0) {
     dprintf(idx, "IRC:\n");
-    dprintf(idx, "  out: %s", btos(otraffic_irc + otraffic_irc_today));
-    dprintf(idx, " (%s today)\n", btos(otraffic_irc_today));
-    dprintf(idx, "   in: %s", btos(itraffic_irc + itraffic_irc_today));
-    dprintf(idx, " (%s today)\n", btos(itraffic_irc_today));
+    dprintf(idx, _("  out: %s"), btos(otraffic_irc + otraffic_irc_today));
+    dprintf(idx, _(" (%s today)\n"), btos(otraffic_irc_today));
+    dprintf(idx, _("   in: %s"), btos(itraffic_irc + itraffic_irc_today));
+    dprintf(idx, _(" (%s today)\n"), btos(itraffic_irc_today));
   }
   if (otraffic_bn > 0 || itraffic_bn > 0 || otraffic_bn_today > 0 ||
       itraffic_bn_today > 0) {
-    dprintf(idx, "Botnet:\n");
-    dprintf(idx, "  out: %s", btos(otraffic_bn + otraffic_bn_today));
-    dprintf(idx, " (%s today)\n", btos(otraffic_bn_today));
-    dprintf(idx, "   in: %s", btos(itraffic_bn + itraffic_bn_today));
-    dprintf(idx, " (%s today)\n", btos(itraffic_bn_today));
+    dprintf(idx, _("Botnet:\n"));
+    dprintf(idx, _("  out: %s"), btos(otraffic_bn + otraffic_bn_today));
+    dprintf(idx, _(" (%s today)\n"), btos(otraffic_bn_today));
+    dprintf(idx, _("   in: %s"), btos(itraffic_bn + itraffic_bn_today));
+    dprintf(idx, _(" (%s today)\n"), btos(itraffic_bn_today));
   }
   if (otraffic_dcc > 0 || itraffic_dcc > 0 || otraffic_dcc_today > 0 ||
       itraffic_dcc_today > 0) {
-    dprintf(idx, "Partyline:\n");
+    dprintf(idx, _("Partyline:\n"));
     itmp = otraffic_dcc + otraffic_dcc_today;
     itmp2 = otraffic_dcc_today;
-    dprintf(idx, "  out: %s", btos(itmp));
-    dprintf(idx, " (%s today)\n", btos(itmp2));
-    dprintf(idx, "   in: %s", btos(itraffic_dcc + itraffic_dcc_today));
-    dprintf(idx, " (%s today)\n", btos(itraffic_dcc_today));
+    dprintf(idx, _("  out: %s"), btos(itmp));
+    dprintf(idx, _(" (%s today)\n"), btos(itmp2));
+    dprintf(idx, _("   in: %s"), btos(itraffic_dcc + itraffic_dcc_today));
+    dprintf(idx, _(" (%s today)\n"), btos(itraffic_dcc_today));
   }
   if (otraffic_trans > 0 || itraffic_trans > 0 || otraffic_trans_today > 0 ||
       itraffic_trans_today > 0) {
-    dprintf(idx, "Transfer.mod:\n");
-    dprintf(idx, "  out: %s", btos(otraffic_trans + otraffic_trans_today));
-    dprintf(idx, " (%s today)\n", btos(otraffic_trans_today));
-    dprintf(idx, "   in: %s", btos(itraffic_trans + itraffic_trans_today));
-    dprintf(idx, " (%s today)\n", btos(itraffic_trans_today));
+    dprintf(idx, _("Transfer.mod:\n"));
+    dprintf(idx, _("  out: %s"), btos(otraffic_trans + otraffic_trans_today));
+    dprintf(idx, _(" (%s today)\n"), btos(otraffic_trans_today));
+    dprintf(idx, _("   in: %s"), btos(itraffic_trans + itraffic_trans_today));
+    dprintf(idx, _(" (%s today)\n"), btos(itraffic_trans_today));
   }
   if (otraffic_unknown > 0 || otraffic_unknown_today > 0) {
-    dprintf(idx, "Misc:\n");
-    dprintf(idx, "  out: %s", btos(otraffic_unknown + otraffic_unknown_today));
-    dprintf(idx, " (%s today)\n", btos(otraffic_unknown_today));
-    dprintf(idx, "   in: %s", btos(itraffic_unknown + itraffic_unknown_today));
-    dprintf(idx, " (%s today)\n", btos(itraffic_unknown_today));
+    dprintf(idx, _("Misc:\n"));
+    dprintf(idx, _("  out: %s"), btos(otraffic_unknown + otraffic_unknown_today));
+    dprintf(idx, _(" (%s today)\n"), btos(otraffic_unknown_today));
+    dprintf(idx, _("   in: %s"), btos(itraffic_unknown + itraffic_unknown_today));
+    dprintf(idx, _(" (%s today)\n"), btos(itraffic_unknown_today));
   }
   dprintf(idx, "---\n");
-  dprintf(idx, "Total:\n");
+  dprintf(idx, _("Total:\n"));
   itmp = otraffic_irc + otraffic_bn + otraffic_dcc + otraffic_trans +
          otraffic_unknown + otraffic_irc_today + otraffic_bn_today +
          otraffic_dcc_today + otraffic_trans_today + otraffic_unknown_today;
   itmp2 = otraffic_irc_today + otraffic_bn_today + otraffic_dcc_today +
           otraffic_trans_today + otraffic_unknown_today;
-  dprintf(idx, "  out: %s", btos(itmp));
-  dprintf(idx, " (%s today)\n", btos(itmp2));
-  dprintf(idx, "   in: %s", btos(itraffic_irc + itraffic_bn + itraffic_dcc +
+  dprintf(idx, _("  out: %s"), btos(itmp));
+  dprintf(idx, _(" (%s today)\n"), btos(itmp2));
+  dprintf(idx, _("   in: %s"), btos(itraffic_irc + itraffic_bn + itraffic_dcc +
           itraffic_trans + itraffic_unknown + itraffic_irc_today +
           itraffic_bn_today + itraffic_dcc_today + itraffic_trans_today +
           itraffic_unknown_today));
-  dprintf(idx, " (%s today)\n", btos(itraffic_irc_today + itraffic_bn_today +
+  dprintf(idx, _(" (%s today)\n"), btos(itraffic_irc_today + itraffic_bn_today +
           itraffic_dcc_today + itraffic_trans_today + itraffic_unknown_today));
   putlog(LOG_CMDS, "*", "#%s# traffic", dcc[idx].nick);
 }
@@ -2827,34 +2843,34 @@
   char unit[10];
   float xbytes;
 
-  sprintf(unit, "Bytes");
+  sprintf(unit, _("Bytes"));
   xbytes = bytes;
   if (xbytes > 1024.0) {
-    sprintf(unit, "KBytes");
+    sprintf(unit, _("KBytes"));
     xbytes = xbytes / 1024.0;
   }
   if (xbytes > 1024.0) {
-    sprintf(unit, "MBytes");
+    sprintf(unit, _("MBytes"));
     xbytes = xbytes / 1024.0;
   }
   if (xbytes > 1024.0) {
-    sprintf(unit, "GBytes");
+    sprintf(unit, _("GBytes"));
     xbytes = xbytes / 1024.0;
   }
   if (xbytes > 1024.0) {
-    sprintf(unit, "TBytes");
+    sprintf(unit, _("TBytes"));
     xbytes = xbytes / 1024.0;
   }
   if (bytes > 1024)
     sprintf(traffictxt, "%.2f %s", xbytes, unit);
   else
-    sprintf(traffictxt, "%lu Bytes", bytes);
+    sprintf(traffictxt, _("%lu Bytes"), bytes);
   return traffictxt;
 }
 
 static void cmd_whoami(struct userrec *u, int idx, char *par)
 {
-  dprintf(idx, "You are %s@%s.\n", dcc[idx].nick, botnetnick);
+  dprintf(idx, _("You are %s@%s.\n"), dcc[idx].nick, botnetnick);
   putlog(LOG_CMDS, "*", "#%s# whoami", dcc[idx].nick);
 }
 
Index: eggdrop1.8/src/dcc.c
diff -u eggdrop1.8/src/dcc.c:1.6 eggdrop1.8/src/dcc.c:1.6.2.1
--- eggdrop1.8/src/dcc.c:1.6	Sun Oct 31 08:40:38 2010
+++ eggdrop1.8/src/dcc.c	Wed Nov 10 07:39:19 2010
@@ -4,7 +4,7 @@
  *   disconnect on a dcc socket
  *   ...and that's it!  (but it's a LOT)
  *
- * $Id: dcc.c,v 1.6 2010/10/31 14:40:38 pseudo Exp $
+ * $Id: dcc.c,v 1.6.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -163,8 +163,8 @@
   dcc[idx].u.bot->version[0] = 0;
   dcc[idx].u.bot->numver = 0;
   if (bfl & BOT_REJECT) {
-    putlog(LOG_BOTS, "*", DCC_REJECT, dcc[idx].nick);
-    dprintf(idx, "bye %s\n", "rejected");
+    putlog(LOG_BOTS, "*", _("Rejecting link from %s"), dcc[idx].nick);
+    dprintf(idx, "bye rejected\n");
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -208,8 +208,8 @@
 #ifndef NO_OLD_BOTNET
   if (b_numver(idx) < NEAT_BOTNET) {
 #if HANDLEN != 9
-    putlog(LOG_BOTS, "*", "Non-matching handle lengths with %s, they use 9 "
-           "characters.", dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Non-matching handle lengths with %s, they use %d "
+           "characters."), dcc[idx].nick, 9);
     dprintf(idx, "error Non-matching handle length: mine %d, yours 9\n",
             HANDLEN);
     dprintf(idx, "bye %s\n", "bad handlen");
@@ -224,8 +224,8 @@
     dprintf(idx, "tb %s\n", botnetnick);
     l = atoi(newsplit(&par));
     if (l != HANDLEN) {
-      putlog(LOG_BOTS, "*", "Non-matching handle lengths with %s, they use %d "
-             "characters.", dcc[idx].nick, l);
+      putlog(LOG_BOTS, "*", _("Non-matching handle lengths with %s, they use %d "
+             "characters."), dcc[idx].nick, l);
       dprintf(idx, "error Non-matching handle length: mine %d, yours %d\n",
               HANDLEN, l);
       dprintf(idx, "bye %s\n", "bad handlen");
@@ -237,8 +237,8 @@
   }
 #endif
   strncpyz(dcc[idx].u.bot->version, par, 120);
-  putlog(LOG_BOTS, "*", DCC_LINKED, dcc[idx].nick);
-  chatout("*** Linked to %s\n", dcc[idx].nick);
+  putlog(LOG_BOTS, "*", _("Linked to %s."), dcc[idx].nick);
+  chatout(_("*** Linked to %s\n"), dcc[idx].nick);
   botnet_send_nlinked(idx, dcc[idx].nick, botnetnick, '!',
                       dcc[idx].u.bot->numver);
   touch_laston(dcc[idx].user, "linked", now);
@@ -256,7 +256,7 @@
    */
   if (dcc[idx].status & STAT_STARTTLS) {
     dprintf(idx, "starttls\n");
-    putlog(LOG_BOTS, "*", "Sent STARTTLS to %s...", dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Sent STARTTLS to %s..."), dcc[idx].nick);
   }
 #endif
 
@@ -273,7 +273,7 @@
       add_note(s1, botnetnick, s, -2, 0);
     }
     if (dcc[idx].u.bot->numver >= -1)
-      putlog(LOG_BOTS, "*", DCC_LINKFAIL, dcc[idx].nick);
+      putlog(LOG_BOTS, "*", _("Failed link to %s."), dcc[idx].nick);
     killsock(dcc[idx].sock);
     strcpy(s, dcc[idx].nick);
     lostdcc(idx);
@@ -310,13 +310,12 @@
       if (i > 0) {
         bots = bots_in_subtree(findbot(dcc[idx].nick));
         users = users_in_subtree(findbot(dcc[idx].nick));
-        egg_snprintf(x, sizeof x,
-                     "Unlinked %s (restructure) (lost %d bot%s and %d user%s)",
-                     dcc[i].nick, bots, (bots != 1) ? "s" : "",
-                     users, (users != 1) ? "s" : "");
+        egg_snprintf(x, sizeof x, _("Unlinked %s (restructure) (lost %d %s "
+                     "and %d %s)"), dcc[i].nick, bots, P_("bot", "bots", bots),
+                     users, P_("user", "users", users));
         chatout("*** %s\n", x);
         botnet_send_unlinked(i, dcc[i].nick, x);
-        dprintf(i, "bye %s\n", "restructure");
+        dprintf(i, "bye restructure\n");
         killsock(dcc[i].sock);
         lostdcc(i);
       }
@@ -356,7 +355,7 @@
   for (i = 0; i < 16; i++)
     sprintf(digest_string + (i * 2), "%.2x", digest[i]);
   dprintf(idx, "digest %s\n", digest_string);
-  putlog(LOG_BOTS, "*", "Received challenge from %s... sending response ...",
+  putlog(LOG_BOTS, "*", _("Received challenge from %s... sending response ..."),
          dcc[idx].nick);
 }
 
@@ -372,12 +371,14 @@
     bot_version(idx, buf);
   else if (!egg_strcasecmp(code, "badpass"))
     /* We entered the wrong password */
-    putlog(LOG_BOTS, "*", DCC_BADPASS, dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Bad password on connect attempt to %s."),
+	   dcc[idx].nick);
   else if (!egg_strcasecmp(code, "passreq")) {
     char *pass = get_user(&USERENTRY_PASS, u);
 
     if (!pass || !strcmp(pass, "-")) {
-      putlog(LOG_BOTS, "*", DCC_PASSREQ, dcc[idx].nick);
+      putlog(LOG_BOTS, "*", _("Password required for connection to %s."),
+	     dcc[idx].nick);
       dprintf(idx, "-\n");
     } else {
       /* Determine if the other end supports an MD5 digest instead of a
@@ -389,20 +390,20 @@
         dprintf(idx, "%s\n", pass);
     }
   } else if (!egg_strcasecmp(code, "error"))
-    putlog(LOG_BOTS, "*", DCC_LINKERROR, dcc[idx].nick, buf);
+    putlog(LOG_BOTS, "*", _("ERROR linking %s: %s"), dcc[idx].nick, buf);
   /* Ignore otherwise */
 }
 
 static void eof_dcc_bot_new(int idx)
 {
-  putlog(LOG_BOTS, "*", DCC_LOSTBOT, dcc[idx].nick, dcc[idx].port);
+  putlog(LOG_BOTS, "*", _("Lost Bot: %s"), dcc[idx].nick, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
 
 static void timeout_dcc_bot_new(int idx)
 {
-  putlog(LOG_BOTS, "*", DCC_TIMEOUT, dcc[idx].nick,
+  putlog(LOG_BOTS, "*", _("Timeout: bot link to %s at %s:%d"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -482,10 +483,9 @@
 
   bots = bots_in_subtree(findbot(dcc[idx].nick));
   users = users_in_subtree(findbot(dcc[idx].nick));
-  egg_snprintf(x, sizeof x,
-               "Lost bot: %s (lost %d bot%s and %d user%s)",
-               dcc[idx].nick, bots, (bots != 1) ? "s" : "", users,
-               (users != 1) ? "s" : "");
+  egg_snprintf(x, sizeof x, _("Lost bot: %s (lost %d %s and %d %s)"),
+               dcc[idx].nick, bots, P_("bot", "bots", bots),
+               users, P_("user", "users", users));
   putlog(LOG_BOTS, "*", "%s.", x);
   chatout("*** %s\n", x);
   botnet_send_unlinked(idx, dcc[idx].nick, x);
@@ -577,7 +577,7 @@
   if (!strcmp(digest_string, remote_digest))
     return 1;
 
-  putlog(LOG_BOTS, "*", "Response (password hash) from %s incorrect",
+  putlog(LOG_BOTS, "*", _("Response (password hash) from %s incorrect"),
          dcc[idx].nick);
   return 0;
 }
@@ -605,8 +605,8 @@
     } else {
       /* Invalid password/digest */
       dprintf(idx, "badpass\n");
-      putlog(LOG_MISC, "*", DCC_BADLOGIN, dcc[idx].nick, dcc[idx].host,
-             dcc[idx].port);
+      putlog(LOG_MISC, "*", _("Bad Password: [%s]%s/%d"), dcc[idx].nick,
+	     dcc[idx].host, dcc[idx].port);
       killsock(dcc[idx].sock);
       lostdcc(idx);
       return;
@@ -631,7 +631,7 @@
       greet_new_bot(idx);
     } else {
       /* Log entry for successful login -slennox 3/28/1999 */
-      putlog(LOG_MISC, "*", DCC_LOGGEDIN, dcc[idx].nick,
+      putlog(LOG_MISC, "*", _("Logged in: %s (%s/%d)"), dcc[idx].nick,
              dcc[idx].host, dcc[idx].port);
       if (dcc[idx].u.chat->away) {
         nfree(dcc[idx].u.chat->away);
@@ -650,8 +650,8 @@
     if (atr & USER_BOT)
       dprintf(idx, "badpass\n");
     else
-      dprintf(idx, DCC_HOUSTON);
-    putlog(LOG_MISC, "*", DCC_BADLOGIN, dcc[idx].nick,
+      dprintf(idx, _("Negative on that  Houston.\n"));
+    putlog(LOG_MISC, "*", _("Bad Password: [%s]%s/%d"), dcc[idx].nick,
            dcc[idx].host, dcc[idx].port);
     if (dcc[idx].u.chat->away) {        /* su from a dumb user */
       /* Turn echo back on for telnet sessions (send IAC WON'T ECHO). */
@@ -666,7 +666,8 @@
       dcc[idx].type = &DCC_CHAT;
       if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
         botnet_send_join_idx(idx, -1);
-      chanout_but(-1, dcc[idx].u.chat->channel, DCC_JOIN, dcc[idx].nick);
+      chanout_but(-1, dcc[idx].u.chat->channel,
+                  _("*** %s has joined the party line.\n"), dcc[idx].nick);
     } else {
       killsock(dcc[idx].sock);
       lostdcc(idx);
@@ -676,7 +677,7 @@
 
 static void eof_dcc_general(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTDCC, dcc[idx].nick,
+  putlog(LOG_MISC, "*", _("Lost dcc connection to %s (%s/%d)"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -685,7 +686,8 @@
 static void tout_dcc_chat_pass(int idx)
 {
   dprintf(idx, "Timeout.\n");
-  putlog(LOG_MISC, "*", DCC_PWDTIMEOUT, dcc[idx].nick, dcc[idx].host);
+  putlog(LOG_MISC, "*", _("Password timeout on dcc chat: [%s]%s"),
+         dcc[idx].nick, dcc[idx].host);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -828,7 +830,7 @@
     }
     c->buffer = 0;
     dcc[idx].status &= ~STAT_PAGE;
-    do_boot(idx, botnetnick, "too many pages - sendq full");
+    do_boot(idx, botnetnick, _("too many pages - sendq full"));
     return;
   }
   if ((c->line_count < c->max_line) && (c->buffer == NULL)) {
@@ -904,10 +906,10 @@
 
 static void eof_dcc_chat(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTDCC, dcc[idx].nick,
+  putlog(LOG_MISC, "*", _("Lost dcc connection to %s (%s/%d)"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
   if (dcc[idx].u.chat->channel >= 0) {
-    chanout_but(idx, dcc[idx].u.chat->channel, "*** %s lost dcc link.\n",
+    chanout_but(idx, dcc[idx].u.chat->channel, _("*** %s lost dcc link.\n"),
                 dcc[idx].nick);
     if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
       botnet_send_part_idx(idx, "lost dcc link");
@@ -986,12 +988,13 @@
             check_tcl_chpt(botnetnick, dcc[idx].nick, dcc[idx].sock,
                            dcc[idx].u.chat->channel);
           check_tcl_chof(dcc[idx].nick, dcc[idx].sock);
-          dprintf(idx, "*** Ja mata!\n");
+          dprintf(idx, _("*** Ja mata!\n"));
           flush_lines(idx, dcc[idx].u.chat);
-          putlog(LOG_MISC, "*", DCC_CLOSED, dcc[idx].nick, dcc[idx].host);
+          putlog(LOG_MISC, "*", _("DCC connection closed (%s!%s)"),
+                 dcc[idx].nick, dcc[idx].host);
           if (dcc[idx].u.chat->channel >= 0) {
             chanout_but(-1, dcc[idx].u.chat->channel,
-                        "*** %s left the party line%s%s\n",
+                        _("*** %s left the party line%s%s\n"),
                         dcc[idx].nick, buf[0] ? ": " : ".", buf);
             if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
               botnet_send_part_idx(idx, buf);
@@ -1001,7 +1004,7 @@
                                                dcc[idx].u.chat->su_nick);
             strcpy(dcc[idx].nick, dcc[idx].u.chat->su_nick);
             dcc[idx].type = &DCC_CHAT;
-            dprintf(idx, "Returning to real nick %s!\n",
+            dprintf(idx, _("Returning to real nick %s!\n"),
                     dcc[idx].u.chat->su_nick);
             nfree(dcc[idx].u.chat->su_nick);
             dcc[idx].u.chat->su_nick = NULL;
@@ -1015,7 +1018,7 @@
             lostdcc(idx);
             return;
           } else {
-            dprintf(DP_STDOUT, "\n### SIMULATION RESET\n\n");
+            dprintf(DP_STDOUT, _("\n### SIMULATION RESET\n\n"));
             dcc_chatter(idx);
             return;
           }
@@ -1134,7 +1137,8 @@
     lasttelnets = 0;
     lasttelnettime = 0;
     lasttelnethost[0] = 0;
-    putlog(LOG_MISC, "*", IRC_TELNETFLOOD, floodhost);
+    putlog(LOG_MISC, "*", _("Telnet connection flood from %s!  "
+           "Placing on ignore!"), floodhost);
     addignore(floodhost, origbotname, "Telnet connection flood",
               now + (60 * ignore_time));
     return 1;
@@ -1151,7 +1155,7 @@
     sockname_t name;
     j = answer(dcc[idx].sock, &name, &port, 0);
     if (j != -1) {
-      dprintf(-j, "Sorry, too many connections already.\r\n");
+      dprintf(-j, _("Sorry, too many connections already.\r\n"));
       killsock(j);
     }
     return;
@@ -1161,7 +1165,7 @@
   while ((sock == -1) && (errno == EAGAIN))
     sock = answer(dcc[idx].sock, &dcc[i].sockname, &port, 0);
   if (sock < 0) {
-    putlog(LOG_MISC, "*", DCC_FAILED, strerror(errno));
+    putlog(LOG_MISC, "*", _("Failed TELNET incoming (%s)"), strerror(errno));
     return;
   }
   /* Buffer data received on this socket.  */
@@ -1172,7 +1176,8 @@
 #else
   if (port < 1024 || port > 65535) {
 #endif
-    putlog(LOG_BOTS, "*", DCC_BADSRC, iptostr(&dcc[i].sockname.addr.sa), port);
+    putlog(LOG_BOTS, "*", _("Refused %s/%d (bad src port)"),
+           iptostr(&dcc[i].sockname.addr.sa), port);
     killsock(sock);
     lostdcc(i);
     return;
@@ -1214,7 +1219,7 @@
       break;
     }
   if (dcc_total == idx) {
-    putlog(LOG_BOTS, "*", "Lost listening socket while resolving %s",
+    putlog(LOG_BOTS, "*", _("Lost listening socket while resolving %s"),
            dcc[i].host);
     killsock(dcc[i].sock);
     lostdcc(i);
@@ -1223,7 +1228,7 @@
   if (dcc[idx].host[0] == '@') {
     /* Restrict by hostname */
     if (!wild_match(dcc[idx].host + 1, dcc[i].host)) {
-      putlog(LOG_BOTS, "*", DCC_BADHOST, dcc[i].host);
+      putlog(LOG_BOTS, "*", _("Refused %s (bad hostname)"), dcc[i].host);
       killsock(dcc[i].sock);
       lostdcc(i);
       return;
@@ -1242,7 +1247,8 @@
   sock = -1;
   j = new_dcc(&DCC_IDENT, 0);
   if (j < 0)
-    putlog(LOG_MISC, "*", DCC_IDENTFAIL, dcc[i].host, strerror(errno));
+    putlog(LOG_MISC, "*", _("Ident failed for %s: %s"), dcc[i].host,
+           strerror(errno));
   else {
     egg_memcpy(&dcc[j].sockname, &dcc[i].sockname, sizeof(sockname_t));
     dcc[j].sock = getsock(dcc[j].sockname.family, 0);
@@ -1256,7 +1262,8 @@
           dcc[j].sockname.addrlen) < 0 && (errno != EINPROGRESS)) {
         killsock(dcc[j].sock);
         lostdcc(j);
-        putlog(LOG_MISC, "*", DCC_IDENTFAIL, dcc[i].host, strerror(errno));
+        putlog(LOG_MISC, "*", _("Ident failed for %s: %s"), dcc[i].host,
+               strerror(errno));
         j = 0;
       }
       sock = dcc[j].sock;
@@ -1279,7 +1286,8 @@
 
 static void eof_dcc_telnet(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_PORTDIE, dcc[idx].port);
+  putlog(LOG_MISC, "*", _("(!) Listening port %d abruptly died."),
+         dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1305,7 +1313,8 @@
 
 static void eof_dcc_dupwait(int idx)
 {
-  putlog(LOG_BOTS, "*", DCC_LOSTDUP, dcc[idx].host);
+  putlog(LOG_BOTS, "*", _("Lost telnet connection from %s while "
+         "checking for duplicate"), dcc[idx].host);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1327,7 +1336,8 @@
   if (in_chain(dcc[idx].nick)) {
     egg_snprintf(x, sizeof x, "%s!%s", dcc[idx].nick, dcc[idx].host);
     dprintf(idx, "error Already connected.\n");
-    putlog(LOG_BOTS, "*", DCC_DUPLICATE, x);
+    putlog(LOG_BOTS, "*", _("Refused telnet connection from %s (duplicate)"),
+           x);
     killsock(dcc[idx].sock);
     lostdcc(idx);
   } else {
@@ -1405,8 +1415,8 @@
   buf[HANDLEN] = 0;
   /* Toss out bad nicknames */
   if (dcc[idx].nick[0] != '@' && !wild_match(dcc[idx].nick, buf)) {
-    dprintf(idx, "Sorry, that nickname format is invalid.\n");
-    putlog(LOG_BOTS, "*", DCC_BADNICK, dcc[idx].host);
+    dprintf(idx, _("Sorry, that nickname format is invalid.\n"));
+    putlog(LOG_BOTS, "*", _("Refused %s (bad nick)"), dcc[idx].host);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1421,7 +1431,7 @@
       if (glob_bot(fr))
         dprintf(idx, "error Certificate UID doesn't match handle\n");
       else
-        dprintf(idx, "Your certificate UID doesn't match your handle.\n");
+        dprintf(idx, _("Your certificate UID doesn't match your handle.\n"));
       killsock(dcc[idx].sock);
       lostdcc(idx);
       return;
@@ -1430,15 +1440,15 @@
 #endif
   /* Make sure users-only/bots-only connects are honored */
   if ((dcc[idx].status & STAT_BOTONLY) && !glob_bot(fr)) {
-    dprintf(idx, "This telnet port is for bots only.\n");
-    putlog(LOG_BOTS, "*", DCC_NONBOT, dcc[idx].host);
+    dprintf(idx, _("This telnet port is for bots only.\n"));
+    putlog(LOG_BOTS, "*", _("Refused %s (non-bot)"), dcc[idx].host);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
   }
   if ((dcc[idx].status & STAT_USRONLY) && glob_bot(fr)) {
     dprintf(idx, "error Only users may connect at this port.\n");
-    putlog(LOG_BOTS, "*", DCC_NONUSER, dcc[idx].host);
+    putlog(LOG_BOTS, "*", _("Refused %s (non-user)"), dcc[idx].host);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1448,9 +1458,13 @@
     dcc[idx].type = &DCC_TELNET_NEW;
     dcc[idx].timeval = now;
     dprintf(idx, "\n");
-    dprintf(idx, IRC_TELNET, botnetnick);
-    dprintf(idx, IRC_TELNET1);
-    dprintf(idx, "\nEnter the nickname you would like to use.\n");
+    dprintf(idx, _("This is the telnet interface to %s, an eggdrop bot.\n"
+            "Don't abuse it, and it will be open for all your friends, too.\n"),
+            botnetnick);
+    dprintf(idx, _("You now get to pick a nick to use on the bot,\n"
+            "and a password so nobody else can pretend to be you.\n"
+            "Please remember both!"));
+    dprintf(idx, _("\nEnter the nickname you would like to use.\n"));
     return;
   }
   if (chan_op(fr)) {
@@ -1461,8 +1475,9 @@
     ok = 1;
 
   if (!ok) {
-    dprintf(idx, "You don't have access.\n");
-    putlog(LOG_BOTS, "*", DCC_INVHANDLE, dcc[idx].host, buf);
+    dprintf(idx, _("You don't have access.\n"));
+    putlog(LOG_BOTS, "*", _("Refused %s (invalid handle: %s)"),
+           dcc[idx].host, buf);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1472,7 +1487,8 @@
   if (glob_bot(fr)) {
     if (!egg_strcasecmp(botnetnick, dcc[idx].nick)) {
       dprintf(idx, "error You cannot link using my botnetnick.\n");
-      putlog(LOG_BOTS, "*", DCC_MYBOTNETNICK, dcc[idx].host);
+      putlog(LOG_BOTS, "*", _("Refused telnet connection from %s "
+             "(tried using my botnetnick)"), dcc[idx].host);
       killsock(dcc[idx].sock);
       lostdcc(idx);
       return;
@@ -1505,7 +1521,8 @@
     uf = get_user(&USERENTRY_FPRINT, dcc[idx].user);
     if (cf && uf && !strcasecmp(cf, uf)) {
       if (!glob_bot(fr))
-        dprintf(idx, "Used your fingerprint for automatic authentication.\n");
+        dprintf(idx, _("Used your fingerprint for automatic "
+                "authentication.\n"));
       dcc[idx].status |= STAT_FPRINT;
       dcc_chat_pass(idx, "+", 1);
     /* Required? */
@@ -1513,8 +1530,8 @@
       if (glob_bot(fr))
         dprintf(idx, "error fingerprint required\n");
       else
-        dprintf(idx, "Certificate authentication required. "
-                "You need to set your fingerprint.\n");
+        dprintf(idx, _("Certificate authentication required. "
+                "You need to set your fingerprint.\n"));
       killsock(dcc[idx].sock);
       lostdcc(idx);
     }
@@ -1543,7 +1560,8 @@
       char fakepass[2] = "+";
 
       if (!glob_bot(fr))
-        dprintf(idx, "Used your fingerprint for automatic authentication.\n");
+        dprintf(idx, _("Used your fingerprint for automatic "
+                "authentication.\n"));
       dcc[idx].status |= STAT_FPRINT;
       dcc_chat_pass(idx, fakepass, 1);
       return;
@@ -1552,8 +1570,8 @@
       if (glob_bot(fr))
         dprintf(idx, "error fingerprint required\n");
       else
-        dprintf(idx, "Certificate authentication required. "
-                "You need to set your fingerprint.\n");
+        dprintf(idx, _("Certificate authentication required. "
+                "You need to set your fingerprint.\n"));
       killsock(dcc[idx].sock);
       lostdcc(idx);
       return;
@@ -1579,8 +1597,9 @@
 #endif
       return;
     }
-    dprintf(idx, "Can't telnet until you have a password set.\n");
-    putlog(LOG_MISC, "*", DCC_NOPASS, dcc[idx].nick, dcc[idx].host);
+    dprintf(idx, _("Can't telnet until you have a password set.\n"));
+    putlog(LOG_MISC, "*", _("Refused [%s]%s (no password)"), dcc[idx].nick,
+           dcc[idx].host);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -1627,7 +1646,7 @@
      * authentication will not be correct - you've been warned ;)
      * <Cybah>
      */
-    putlog(LOG_BOTS, "*", "Challenging %s...", dcc[idx].nick);
+    putlog(LOG_BOTS, "*", _("Challenging %s..."), dcc[idx].nick);
     dprintf(idx, "passreq <%x%x@%s>\n", getpid(), dcc[idx].timeval, botnetnick);
   } else {
     /* NOTE: The MD5 digest used above to prevent cleartext passwords being
@@ -1641,25 +1660,27 @@
     /* Turn off remote telnet echo (send IAC WILL ECHO). */
     if (dcc[idx].status & STAT_TELNET) {
       char buf[1030];
-      snprintf(buf, sizeof buf, "\n%s%s\r\n", escape_telnet(DCC_ENTERPASS),
+      snprintf(buf, sizeof buf, "\n%s%s\r\n",
+               escape_telnet(_("Enter your password.")),
                TLN_IAC_C TLN_WILL_C TLN_ECHO_C);
       tputs(dcc[idx].sock, buf, strlen(buf));
     } else
-      dprintf(idx, "\n%s\n", DCC_ENTERPASS);
+      dprintf(idx, "\n%s\n", _("Enter your password."));
   }
 }
 
 static void eof_dcc_telnet_id(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTCON, dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", _("Lost telnet connection to %s/%d"),
+         dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
 
 static void timeout_dcc_telnet_id(int idx)
 {
-  dprintf(idx, "Timeout.\n");
-  putlog(LOG_MISC, "*", DCC_TTIMEOUT, dcc[idx].host);
+  dprintf(idx, _("Timeout.\n"));
+  putlog(LOG_MISC, "*", _("Ident timeout on telnet: %s"), dcc[idx].host);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1698,18 +1719,17 @@
     if (buf[x] <= 32)
       ok = 0;
   if (!ok) {
-    dprintf(idx, "\nYou can't use weird symbols in your nick.\n");
-    dprintf(idx, "Try another one please:\n");
+    dprintf(idx, _("\nYou can't use weird symbols in your nick.\n"
+            "Try another one please:\n"));
   } else if (strchr(BADHANDCHARS, buf[0]) != NULL) {
-    dprintf(idx, "\nYou can't start your nick with the character '%c'\n",
-            buf[0]);
-    dprintf(idx, "Try another one please:\n");
+    dprintf(idx, _("\nYou can't start your nick with the character '%c'\n"
+            "Try another one please:\n"), buf[0]);
   } else if (get_user_by_handle(userlist, buf)) {
-    dprintf(idx, "\nSorry, that nickname is taken already.\n");
-    dprintf(idx, "Try another one please:\n");
+    dprintf(idx, _("\nSorry, that nickname is taken already.\n"
+            "Try another one please:\n"));
     return;
   } else if (!egg_strcasecmp(buf, botnetnick))
-    dprintf(idx, "Sorry, can't use my name for a nick.\n");
+    dprintf(idx, _("Sorry, can't use my name for a nick.\n"));
   else {
     strcpy(dcc[idx].nick, buf);
     if (make_userfile)
@@ -1740,15 +1760,17 @@
     check_dcc_attrs(dcc[idx].user, USER_PARTY | default_flags);
     dcc[idx].type = &DCC_TELNET_PW;
     if (make_userfile) {
-      dprintf(idx, "\nYOU ARE THE MASTER/OWNER ON THIS BOT NOW\n");
-      dprintf(idx, IRC_LIMBO);
-      putlog(LOG_MISC, "*", DCC_INSTCOMPL, buf);
+      dprintf(idx, _("\nYOU ARE THE MASTER/OWNER ON THIS BOT NOW\n"));
+      dprintf(idx, _("From now on, you don't need to use the -m option "
+              "to start the bot.\nEnjoy !!"));
+      putlog(LOG_MISC, "*", _("Bot installation complete, first master is %s"),
+             buf);
       make_userfile = 0;
       write_userfile(-1);
       add_note(buf, botnetnick, "Welcome to eggdrop! :)", -1, 0);
     }
-    dprintf(idx, "\nOkay, now choose and enter a password:\n");
-    dprintf(idx, "(Only the first 15 letters are significant.)\n");
+    dprintf(idx, _("\nOkay, now choose and enter a password:\n"
+            "(Only the first 15 letters are significant.)\n"));
   }
 }
 
@@ -1762,20 +1784,20 @@
   buf[16] = 0;
   ok = 1;
   if (strlen(buf) < 4) {
-    dprintf(idx, "\nTry to use at least 4 characters in your password.\n");
-    dprintf(idx, "Choose and enter a password:\n");
+    dprintf(idx, _("\nTry to use at least 4 characters in your password.\n"));
+    dprintf(idx, _("Choose and enter a password:\n"));
     return;
   }
   for (x = 0; x < strlen(buf); x++)
     if ((buf[x] <= 32) || (buf[x] == 127))
       ok = 0;
   if (!ok) {
-    dprintf(idx, "\nYou can't use weird symbols in your password.\n");
-    dprintf(idx, "Try another one please:\n");
+    dprintf(idx, _("\nYou can't use weird symbols in your password.\n"));
+    dprintf(idx, _("Try another one please:\n"));
     return;
   }
-  putlog(LOG_MISC, "*", DCC_NEWUSER, dcc[idx].nick, dcc[idx].host,
-         dcc[idx].port);
+  putlog(LOG_MISC, "*", _("New user via telnet: [%s]%s/%d"), dcc[idx].nick,
+         dcc[idx].host, dcc[idx].port);
   if (notify_new[0]) {
     char s[121], s1[121], s2[121];
 
@@ -1792,8 +1814,8 @@
   }
   newpass = newsplit(&buf);
   set_user(&USERENTRY_PASS, dcc[idx].user, newpass);
-  dprintf(idx, "\nRemember that!  You'll need it next time you log in.\n");
-  dprintf(idx, "You now have an account on %s...\n\n\n", botnetnick);
+  dprintf(idx, _("\nRemember that!  You'll need it next time you log in.\n"));
+  dprintf(idx, _("You now have an account on %s...\n\n\n"), botnetnick);
   dcc[idx].type = &DCC_CHAT;
   dcc[idx].u.chat->channel = -2;
   dcc_chatter(idx);
@@ -1801,15 +1823,16 @@
 
 static void eof_dcc_telnet_new(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTNEWUSER, dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", _("Lost new telnet user (%s/%d)"), dcc[idx].host,
+         dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
 
 static void eof_dcc_telnet_pw(int idx)
 {
-  putlog(LOG_MISC, "*", DCC_LOSTNEWUSR2, dcc[idx].nick, dcc[idx].host,
-         dcc[idx].port);
+  putlog(LOG_MISC, "*", _("Lost new telnet user %s (%s/%d)"), dcc[idx].nick,
+         dcc[idx].host, dcc[idx].port);
   deluser(dcc[idx].nick);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -1817,17 +1840,18 @@
 
 static void tout_dcc_telnet_new(int idx)
 {
-  dprintf(idx, "Guess you're not there.  Bye.\n");
-  putlog(LOG_MISC, "*", DCC_TIMEOUTUSER, dcc[idx].host, dcc[idx].port);
+  dprintf(idx, _("Guess you're not there.  Bye.\n"));
+  putlog(LOG_MISC, "*", _("Timeout on new telnet user: %s/%d"), dcc[idx].host,
+         dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
 
 static void tout_dcc_telnet_pw(int idx)
 {
-  dprintf(idx, "Guess you're not there.  Bye.\n");
-  putlog(LOG_MISC, "*", DCC_TIMEOUTUSR2, dcc[idx].nick,
-         dcc[idx].host, dcc[idx].port);
+  dprintf(idx, _("Guess you're not there.  Bye.\n"));
+  putlog(LOG_MISC, "*", _("Timeout on new telnet user: [%s]%s/%d"),
+         dcc[idx].nick, dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
 }
@@ -1882,7 +1906,7 @@
   Tcl_SetVar(interp, "_n", s, 0);
   Tcl_SetVar(interp, "_a", args, 0);
   if (Tcl_VarEval(interp, name, " $_n $_a", NULL) == TCL_ERROR) {
-    putlog(LOG_MISC, "*", DCC_TCLERROR, name, tcl_resultstring());
+    putlog(LOG_MISC, "*", _("Tcl error [%s]: %s"), name, tcl_resultstring());
     return -1;
   }
   return tcl_resultint();
@@ -1919,7 +1943,8 @@
     }
     if (dcc[idx].type == &DCC_CHAT) {
       if (dcc[idx].u.chat->channel >= 0) {
-        chanout_but(-1, dcc[idx].u.chat->channel, DCC_JOIN, dcc[idx].nick);
+        chanout_but(-1, dcc[idx].u.chat->channel,
+                    _("*** %s has joined the party line.\n"), dcc[idx].nick);
         if (dcc[idx].u.chat->channel < 10000)
           botnet_send_join_idx(idx, -1);
         check_tcl_chjn(botnetnick, dcc[idx].nick, dcc[idx].u.chat->channel,
@@ -1952,7 +1977,8 @@
   if (dcc[idx].type && dcc[idx].type->eof)
     dcc[idx].type->eof(idx);
   else {
-    putlog(LOG_MISC, "*", DCC_DEADSOCKET, dcc[idx].sock, dcc[idx].type->name);
+    putlog(LOG_MISC, "*", _("*** ATTENTION: DEAD SOCKET (%d) OF TYPE %s "
+           "UNTRAPPED"), dcc[idx].sock, dcc[idx].type->name);
     killsock(dcc[idx].sock);
     lostdcc(idx);
   }
@@ -2060,7 +2086,8 @@
 {
   int i;
 
-  putlog(LOG_MISC, "*", DCC_LOSTCONN, dcc[idx].host, dcc[idx].port);
+  putlog(LOG_MISC, "*", _("Lost telnet connection to %s/%d"), dcc[idx].host,
+         dcc[idx].port);
   for (i = 0; i < dcc_total; i++)
     if ((dcc[i].type == &DCC_IDENT) &&
         (dcc[i].u.ident_sock == dcc[idx].sock)) {
@@ -2128,7 +2155,7 @@
   for (i = 0; i < dcc_total; i++)
     if ((dcc[i].type == &DCC_IDENTWAIT) &&
         (dcc[i].sock == dcc[idx].u.ident_sock)) {
-      putlog(LOG_MISC, "*", DCC_EOFIDENT);
+      putlog(LOG_MISC, "*", _("Timeout/EOF ident connection"));
       simple_sprintf(buf, "telnet@%s", dcc[idx].host);
       dcc_telnet_got_ident(i, buf);
     }
@@ -2166,7 +2193,7 @@
       break;
   dcc[i].u.other = 0;
   if (dcc_total == idx) {
-    putlog(LOG_MISC, "*", DCC_LOSTIDENT);
+    putlog(LOG_MISC, "*", _("Lost ident wait telnet socket!!"));
     killsock(dcc[i].sock);
     lostdcc(i);
     return;
@@ -2190,7 +2217,7 @@
     if (!ok && (dcc[idx].status & LSTN_PUBLIC))
       ok = 1;
     if (!ok) {
-      putlog(LOG_MISC, "*", DCC_NOACCESS, dcc[i].host);
+      putlog(LOG_MISC, "*", _("Denied telnet: %s  No Access"), dcc[i].host);
       killsock(dcc[i].sock);
       lostdcc(i);
       return;
@@ -2240,11 +2267,11 @@
    * about ourselves. <cybah>
    */
   if (stealth_telnets)
-    sub_lang(i, MISC_BANNER_STEALTH);
+    sub_lang(i, _("\nNickname.\n"));
   else {
     dprintf(i, "\n\n");
-    sub_lang(i, MISC_BANNER);
+    sub_lang(i, _("%B  (%E)\n\nPlease enter your nickname.\n"));
   }
   if (allow_new_telnets)
-    dprintf(i, "(If you are new, enter 'NEW' here.)\n");
+    dprintf(i, _("(If you are new, enter 'NEW' here.)\n"));
 }
Index: eggdrop1.8/src/dccutil.c
diff -u eggdrop1.8/src/dccutil.c:1.3 eggdrop1.8/src/dccutil.c:1.3.2.1
--- eggdrop1.8/src/dccutil.c:1.3	Tue Oct 19 06:13:33 2010
+++ eggdrop1.8/src/dccutil.c	Wed Nov 10 07:39:19 2010
@@ -6,7 +6,7 @@
  *   memory management for dcc structures
  *   timeout checking for dcc connections
  *
- * $Id: dccutil.c,v 1.3 2010/10/19 12:13:33 pseudo Exp $
+ * $Id: dccutil.c,v 1.3.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -65,7 +65,8 @@
     max_socks = 1;
 
   if (td->MAXSOCKS == max_socks) {
-    putlog(LOG_MISC, "*", "Maximum socket limit reached. Consider raising max-socks.");
+    putlog(LOG_MISC, "*", _("Maximum socket limit reached. "
+                            "Consider raising max-socks."));
     return -1;
   }
 
@@ -293,10 +294,10 @@
     }
     /* But *do* bother with sending it locally */
     if (!dcc[idx].u.chat->channel) {
-      chanout_but(-1, 0, "*** %s joined the party line.\n", dcc[idx].nick);
+      chanout_but(-1, 0, _("*** %s joined the party line.\n"), dcc[idx].nick);
     } else if (dcc[idx].u.chat->channel > 0) {
       chanout_but(-1, dcc[idx].u.chat->channel,
-                  "*** %s joined the channel.\n", dcc[idx].nick);
+                  _("*** %s joined the channel.\n"), dcc[idx].nick);
     }
   }
 }
@@ -440,12 +441,12 @@
   }
   if (dcc[idx].u.chat->channel >= 0) {
     chanout_but(-1, dcc[idx].u.chat->channel,
-                "*** %s is no longer away.\n", dcc[idx].nick);
+                _("*** %s is no longer away.\n"), dcc[idx].nick);
     if (dcc[idx].u.chat->channel < GLOBAL_CHANS) {
       botnet_send_away(-1, botnetnick, dcc[idx].sock, NULL, idx);
     }
   }
-  dprintf(idx, "You're not away any more.\n");
+  dprintf(idx, _("You're not away any more.\n"));
   nfree(dcc[idx].u.chat->away);
   dcc[idx].u.chat->away = NULL;
   check_tcl_away(botnetnick, dcc[idx].sock, NULL);
@@ -467,12 +468,12 @@
   strcpy(dcc[idx].u.chat->away, s);
   if (dcc[idx].u.chat->channel >= 0) {
     chanout_but(-1, dcc[idx].u.chat->channel,
-                "*** %s is now away: %s\n", dcc[idx].nick, s);
+                _("*** %s is now away: %s\n"), dcc[idx].nick, s);
     if (dcc[idx].u.chat->channel < GLOBAL_CHANS) {
       botnet_send_away(-1, botnetnick, dcc[idx].sock, s, idx);
     }
   }
-  dprintf(idx, "You are now away.\n");
+  dprintf(idx, _("You are now away.\n"));
   check_tcl_away(botnetnick, dcc[idx].sock, s);
 }
 
@@ -520,9 +521,9 @@
   }
   if (p != NULL) {
     if (dcc[idx].status & STAT_TELNET)
-      tputs(dcc[idx].sock, "[More]: ", 8);
+      tputs(dcc[idx].sock, _("[More]: "), 8);
     else
-      tputs(dcc[idx].sock, "[More]\n", 7);
+      tputs(dcc[idx].sock, _("[More]\n"), 7);
   }
   ci->buffer = p;
   ci->line_count = 0;
@@ -578,12 +579,13 @@
     chat->msgs_per_sec++;
     if (chat->msgs_per_sec > dcc_flood_thr) {
       /* FLOOD */
-      dprintf(idx, "*** FLOOD: %s.\n", IRC_GOODBYE);
+      dprintf(idx, _("*** FLOOD: Goodbye.\n"));
       /* Evil assumption here that flags&DCT_CHAT implies chat type */
       if ((dcc[idx].type->flags & DCT_CHAT) && chat && (chat->channel >= 0)) {
         char x[1024];
 
-        egg_snprintf(x, sizeof x, DCC_FLOODBOOT, dcc[idx].nick);
+        egg_snprintf(x, sizeof x, _("%s has been forcibly removed for "
+                     "flooding.\n"), dcc[idx].nick);
         chanout_but(idx, chat->channel, "*** %s", x);
         if (chat->channel < GLOBAL_CHANS)
           botnet_send_part_idx(idx, x);
@@ -593,7 +595,7 @@
         killsock(dcc[idx].sock);
         lostdcc(idx);
       } else {
-        dprintf(DP_STDOUT, "\n### SIMULATION RESET ###\n\n");
+        dprintf(DP_STDOUT, _("\n### SIMULATION RESET ###\n\n"));
         dcc_chatter(idx);
       }
       return 1;                 /* <- flood */
@@ -608,17 +610,21 @@
 {
   int files = (dcc[idx].type != &DCC_CHAT);
 
-  dprintf(idx, DCC_BOOTED1);
-  dprintf(idx, DCC_BOOTED2, files ? "file section" : "bot",
-          by, reason[0] ? ": " : ".", reason);
+  dprintf(idx, _("-=- poof -=-\n"));
+  if (files)
+    dprintf(idx, _("You've been booted from the file section by %s%s%s\n"),
+            by, reason[0] ? ": " : ".", reason);
+  else
+    dprintf(idx, _("You've been booted from the bot by %s%s%s\n"),
+            by, reason[0] ? ": " : ".", reason);
   /* If it's a partyliner (chatterer :) */
   /* Horrible assumption that DCT_CHAT using structure uses same format
    * as DCC_CHAT */
   if ((dcc[idx].type->flags & DCT_CHAT) && (dcc[idx].u.chat->channel >= 0)) {
     char x[1024];
 
-    egg_snprintf(x, sizeof x, DCC_BOOTED3, by, dcc[idx].nick,
-                 reason[0] ? ": " : "", reason);
+    egg_snprintf(x, sizeof x, _("%s booted %s from the party line%s%s"), by,
+                 dcc[idx].nick, reason[0] ? ": " : "", reason);
     chanout_but(idx, dcc[idx].u.chat->channel, "*** %s.\n", x);
     if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
       botnet_send_part_idx(idx, x);
@@ -629,7 +635,7 @@
     lostdcc(idx);
     /* Entry must remain in the table so it can be logged by the caller */
   } else {
-    dprintf(DP_STDOUT, "\n### SIMULATION RESET\n\n");
+    dprintf(DP_STDOUT, _("\n### SIMULATION RESET\n\n"));
     dcc_chatter(idx);
   }
   return;
Index: eggdrop1.8/src/dns.c
diff -u eggdrop1.8/src/dns.c:1.2 eggdrop1.8/src/dns.c:1.2.2.1
--- eggdrop1.8/src/dns.c:1.2	Thu Aug  5 12:12:05 2010
+++ eggdrop1.8/src/dns.c	Wed Nov 10 07:39:19 2010
@@ -4,7 +4,7 @@
  *   provides the code used by the bot if the DNS module is not loaded
  *   DNS Tcl commands
  *
- * $Id: dns.c,v 1.2 2010/08/05 18:12:05 pseudo Exp $
+ * $Id: dns.c,v 1.2.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Written by Fabian Knittel <fknittel at gmx.de>
@@ -56,7 +56,7 @@
 
 void eof_dcc_dnswait(int idx)
 {
-  putlog(LOG_MISC, "*", "Lost connection while resolving hostname [%s/%d]",
+  putlog(LOG_MISC, "*", _("Lost connection while resolving hostname [%s/%d])"),
          iptostr(&dcc[idx].sockname.addr.sa), dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -265,10 +265,10 @@
     output = Tcl_Concat(2, argv);
 
     if (Tcl_Eval(interp, output) == TCL_ERROR)
-      putlog(LOG_MISC, "*", DCC_TCLERROR, tclinfo->proc, tcl_resultstring());
+      putlog(LOG_MISC, "*", _("Tcl error [%s]: %s"), tclinfo->proc, tcl_resultstring());
     Tcl_Free(output);
   } else if (Tcl_Eval(interp, Tcl_DStringValue(&list)) == TCL_ERROR)
-    putlog(LOG_MISC, "*", DCC_TCLERROR, tclinfo->proc, tcl_resultstring());
+    putlog(LOG_MISC, "*", _("Tcl error [%s]: %s"), tclinfo->proc, tcl_resultstring());
 
   Tcl_DStringFree(&list);
 
@@ -414,9 +414,11 @@
 
       if (de->type && de->type->event)
         de->type->event(ip, hostn, ok, de->other);
+      else if (de->type && de->type->name)
+        putlog(LOG_MISC, "*", _("(!) Unknown DNS event type found: %s"),
+               de->type->name);
       else
-        putlog(LOG_MISC, "*", "(!) Unknown DNS event type found: %s",
-               (de->type && de->type->name) ? de->type->name : "<empty>");
+        putlog(LOG_MISC, "*", _("(!) Unknown DNS event type found with no name"));
       nfree(de);
       de = ode;
     }
@@ -442,9 +444,11 @@
 
       if (de->type && de->type->event)
         de->type->event(ip, hostn, ok, de->other);
+      else if (de->type && de->type->name)
+        putlog(LOG_MISC, "*", _("(!) Unknown DNS event type found: %s"),
+               de->type->name);
       else
-        putlog(LOG_MISC, "*", "(!) Unknown DNS event type found: %s",
-               (de->type && de->type->name) ? de->type->name : "<empty>");
+        putlog(LOG_MISC, "*", _("(!) Unknown DNS event type found with no name"));
 
       if (de->res_data.hostname)
         nfree(de->res_data.hostname);
Index: eggdrop1.8/src/flags.c
diff -u eggdrop1.8/src/flags.c:1.1.1.1 eggdrop1.8/src/flags.c:1.1.1.1.2.1
--- eggdrop1.8/src/flags.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/flags.c	Wed Nov 10 07:39:19 2010
@@ -2,7 +2,7 @@
  * flags.c -- handles:
  *   all the flag matching/conversion functions in one neat package :)
  *
- * $Id: flags.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: flags.c,v 1.1.1.1.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -192,55 +192,55 @@
 
   s[0] = 0;
   if (x & LOG_MSGS)
-    i += my_strcpy(s, "msgs, ");
+    i += my_strcpy(s, _("msgs, "));
   if (x & LOG_PUBLIC)
-    i += my_strcpy(s + i, "public, ");
+    i += my_strcpy(s + i, _("public, "));
   if (x & LOG_JOIN)
-    i += my_strcpy(s + i, "joins, ");
+    i += my_strcpy(s + i, _("joins, "));
   if (x & LOG_MODES)
-    i += my_strcpy(s + i, "kicks/modes, ");
+    i += my_strcpy(s + i, _("kicks/modes, "));
   if (x & LOG_CMDS)
-    i += my_strcpy(s + i, "cmds, ");
+    i += my_strcpy(s + i, _("cmds, "));
   if (x & LOG_MISC)
-    i += my_strcpy(s + i, "misc, ");
+    i += my_strcpy(s + i, _("misc, "));
   if (x & LOG_BOTS)
-    i += my_strcpy(s + i, "bots, ");
+    i += my_strcpy(s + i, _("bots, "));
   if ((x & LOG_RAW) && raw_log)
-    i += my_strcpy(s + i, "raw, ");
+    i += my_strcpy(s + i, _("raw, "));
   if (x & LOG_FILES)
-    i += my_strcpy(s + i, "files, ");
+    i += my_strcpy(s + i, _("files, "));
   if (x & LOG_SERV)
-    i += my_strcpy(s + i, "server, ");
+    i += my_strcpy(s + i, _("server, "));
   if (x & LOG_DEBUG)
-    i += my_strcpy(s + i, "debug, ");
+    i += my_strcpy(s + i, _("debug, "));
   if (x & LOG_WALL)
-    i += my_strcpy(s + i, "wallops, ");
+    i += my_strcpy(s + i, _("wallops, "));
   if ((x & LOG_SRVOUT) && raw_log)
-    i += my_strcpy(s + i, "server output, ");
+    i += my_strcpy(s + i, _("server output, "));
   if ((x & LOG_BOTNET) && raw_log)
-    i += my_strcpy(s + i, "botnet traffic, ");
+    i += my_strcpy(s + i, _("botnet traffic, "));
   if ((x & LOG_BOTSHARE) && raw_log)
-    i += my_strcpy(s + i, "share traffic, ");
+    i += my_strcpy(s + i, _("share traffic, "));
   if (x & LOG_LEV1)
-    i += my_strcpy(s + i, "level 1, ");
+    i += my_strcpy(s + i, _("level 1, "));
   if (x & LOG_LEV2)
-    i += my_strcpy(s + i, "level 2, ");
+    i += my_strcpy(s + i, _("level 2, "));
   if (x & LOG_LEV3)
-    i += my_strcpy(s + i, "level 3, ");
+    i += my_strcpy(s + i, _("level 3, "));
   if (x & LOG_LEV4)
-    i += my_strcpy(s + i, "level 4, ");
+    i += my_strcpy(s + i, _("level 4, "));
   if (x & LOG_LEV5)
-    i += my_strcpy(s + i, "level 5, ");
+    i += my_strcpy(s + i, _("level 5, "));
   if (x & LOG_LEV6)
-    i += my_strcpy(s + i, "level 6, ");
+    i += my_strcpy(s + i, _("level 6, "));
   if (x & LOG_LEV7)
-    i += my_strcpy(s + i, "level 7, ");
+    i += my_strcpy(s + i, _("level 7, "));
   if (x & LOG_LEV8)
-    i += my_strcpy(s + i, "level 8, ");
+    i += my_strcpy(s + i, _("level 8, "));
   if (i)
     s[i - 2] = 0;
   else
-    strcpy(s, "none");
+    strcpy(s, _("none"));
   return s;
 }
 
@@ -814,7 +814,7 @@
 
   fr.bot = e->u.ulong;
   build_flags(x, &fr, NULL);
-  dprintf(idx, "  BOT FLAGS: %s\n", x);
+  dprintf(idx, _("  BOT FLAGS: %s\n"), x);
 }
 
 struct user_entry_type USERENTRY_BOTFL = {
Index: eggdrop1.8/src/main.c
diff -u eggdrop1.8/src/main.c:1.6 eggdrop1.8/src/main.c:1.6.2.1
--- eggdrop1.8/src/main.c:1.6	Sat Oct 23 05:16:12 2010
+++ eggdrop1.8/src/main.c	Wed Nov 10 07:39:19 2010
@@ -5,7 +5,7 @@
  *   command line arguments
  *   context and assert debugging
  *
- * $Id: main.c,v 1.6 2010/10/23 11:16:12 pseudo Exp $
+ * $Id: main.c,v 1.6.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -282,7 +282,7 @@
   x = creat("DEBUG", 0644);
   setsock(x, SOCK_NONSOCK);
   if (x < 0) {
-    putlog(LOG_MISC, "*", "* Failed to write DEBUG");
+    putlog(LOG_MISC, "*", _("* Failed to write DEBUG"));
   } else {
     strncpyz(s, ctime(&now), sizeof s);
     dprintf(-x, "Debug (%s) written %s\n", ver, s);
@@ -384,14 +384,15 @@
    */
   if (check_tcl_event("sigterm"))
     return;
-  kill_bot("ACK, I've been terminated!", "TERMINATE SIGNAL -- SIGNING OFF");
+  kill_bot(_("ACK, I've been terminated!"),
+           _("TERMINATE SIGNAL -- SIGNING OFF"));
 }
 
 static void got_quit(int z)
 {
   if (check_tcl_event("sigquit"))
     return;
-  putlog(LOG_MISC, "*", "Received QUIT signal: restarting...");
+  putlog(LOG_MISC, "*", _("Received QUIT signal: restarting..."));
   do_restart = -1;
   return;
 }
@@ -401,7 +402,7 @@
   write_userfile(-1);
   if (check_tcl_event("sighup"))
     return;
-  putlog(LOG_MISC, "*", "Received HUP signal: rehashing...");
+  putlog(LOG_MISC, "*", _("Received HUP signal: rehashing..."));
   do_restart = -2;
   return;
 }
@@ -505,22 +506,30 @@
         newsplit(&z);
         printf("%s\n", version);
         if (z[0])
-          printf("  (patches: %s)\n", z);
-        printf("Configured with: " EGG_AC_ARGS "\n");
-        printf("Compiled with: ");
+          printf(_("  (patches: %s)\n"), z);
+        printf(_("Configured with: %s\n"), EGG_AC_ARGS);
+        printf(_("Compiled with: "));
 #ifdef IPV6
         printf("IPv6, ");
 #endif
 #ifdef TLS
         printf("TLS, ");
 #endif
-        printf("handlen=%d\n", HANDLEN);
+        printf("%s=%d\n", _("handlen"), HANDLEN);
         bg_send_quit(BG_ABORT);
         exit(0);
         break;                  /* this should never be reached */
       case 'h':
         printf("\n%s\n\n", version);
-        printf(EGG_USAGE);
+	printf(_("Usage: eggdrop [options] [config-file]\n\n"
+"Options:\n"
+"  -h   help\n"
+"  -n   Don't background; send all log entries to console.\n"
+"  -nc  Don't background; display channel stats every 10 seconds.\n"
+"  -nt  Don't background; use terminal to simulate DCC chat.\n"
+"  -m   Create userfile.\n"
+"  -h   Show this help.\n"
+"  -v   Show version info, then quit.\n\n"));
         printf("\n");
         bg_send_quit(BG_ABORT);
         exit(0);
@@ -535,7 +544,7 @@
   char s[125];
 
   if (quiet_save < 2)
-    putlog(LOG_MISC, "*", USERF_BACKUP);
+    putlog(LOG_MISC, "*", _("Backing up user file..."));
   egg_snprintf(s, sizeof s, "%s~bak", userfile);
   copyfile(userfile, s);
 }
@@ -585,7 +594,7 @@
       call_hook(HOOK_MINUTELY);
     }
     if (i > 1)
-      putlog(LOG_MISC, "*", "(!) timer drift -- spun %d minutes", i);
+      putlog(LOG_MISC, "*", _("(!) timer drift -- spun %d minutes"), i);
     miltime = (nowtm.tm_hour * 100) + (nowtm.tm_min);
     if (((int) (nowtm.tm_min / 5) * 5) == (nowtm.tm_min)) {     /* 5 min */
       call_hook(HOOK_5MINUTELY);
@@ -619,7 +628,7 @@
       call_hook(HOOK_DAILY);
       if (!keep_all_logs) {
         if (quiet_save < 3)
-          putlog(LOG_MISC, "*", MISC_LOGSWITCH);
+          putlog(LOG_MISC, "*", _("Switching logfiles..."));
         for (i = 0; i < max_logs; i++)
           if (logs[i].filename) {
             char s[1024];
@@ -814,7 +823,7 @@
           dcc[idx].type->activity(idx, buf, i);
         } else
           putlog(LOG_MISC, "*",
-                 "!!! untrapped dcc activity: type %s, sock %d",
+                 _("!!! untrapped dcc activity: type %s, sock %d"),
                  dcc[idx].type->name, dcc[idx].sock);
         break;
       }
@@ -822,15 +831,18 @@
     int idx;
 
     if (i == STDOUT && !backgrd)
-      fatal("END OF FILE ON TERMINAL", 0);
+      fatal(_("END OF FILE ON TERMINAL"), 0);
     for (idx = 0; idx < dcc_total; idx++)
       if (dcc[idx].sock == i) {
         if (dcc[idx].type && dcc[idx].type->eof)
           dcc[idx].type->eof(idx);
         else {
-          putlog(LOG_MISC, "*",
-                 "*** ATTENTION: DEAD SOCKET (%d) OF TYPE %s UNTRAPPED",
-                 i, dcc[idx].type ? dcc[idx].type->name : "*UNKNOWN*");
+          if (dcc[idx].type)
+            putlog(LOG_MISC, "*", _("*** ATTENTION: DEAD SOCKET (%d) "
+                   "OF TYPE %s UNTRAPPED"), i, dcc[idx].type->name);
+          else
+            putlog(LOG_MISC, "*", _("*** ATTENTION: DEAD SOCKET (%d) "
+                   "OF UNKNOWN TYPE UNTRAPPED"), i);
           killsock(i);
           lostdcc(idx);
         }
@@ -838,16 +850,16 @@
       }
     if (idx == dcc_total) {
       putlog(LOG_MISC, "*",
-             "(@) EOF socket %d, not a dcc socket, not anything.", i);
+             _("(@) EOF socket %d, not a dcc socket, not anything."), i);
       close(i);
       killsock(i);
     }
   } else if (xx == -2 && errno != EINTR) {      /* select() error */
-    putlog(LOG_MISC, "*", "* Socket error #%d; recovering.", errno);
+    putlog(LOG_MISC, "*", _("* Socket error #%d; recovering."), errno);
     for (i = 0; i < dcc_total; i++) {
       if ((fcntl(dcc[i].sock, F_GETFD, 0) == -1) && (errno == EBADF)) {
         putlog(LOG_MISC, "*",
-               "DCC socket %d (type %d, name '%s') expired -- pfft",
+               _("DCC socket %d (type %d, name '%s') expired -- pfft"),
                dcc[i].sock, dcc[i].type, dcc[i].nick);
         killsock(dcc[i].sock);
         lostdcc(i);
@@ -909,7 +921,8 @@
         }
       }
       if (f != 0) {
-        putlog(LOG_MISC, "*", MOD_STAGNANT);
+        putlog(LOG_MISC, "*", _("Stagnant modules; "
+	       "there WILL be memory leaks!"));
       }
 
       flushlogs();
@@ -1058,7 +1071,7 @@
    * reported to cause trouble in some situations.
    */
   if (((int) getuid() == 0) || ((int) geteuid() == 0))
-    fatal("ERROR: Eggdrop will not run as root!", 0);
+    fatal(_("ERROR: Eggdrop will not run as root!"), 0);
 #endif
 
 #ifndef REPLACE_NOTIFIER
@@ -1077,17 +1090,18 @@
 #endif
   strncpyz(s, ctime(&now), sizeof s);
   strcpy(&s[11], &s[20]);
-  putlog(LOG_ALL, "*", "--- Loading %s (%s)", ver, s);
+  putlog(LOG_ALL, "*", _("--- Loading %s (%s)"), ver, s);
   chanprog();
   if (!encrypt_pass) {
-    printf(MOD_NOCRYPT);
+    printf(_("You have installed modules but have not selected an encryption\n"
+	   "module. Please consult the default config file for info.\n"));
     bg_send_quit(BG_ABORT);
     exit(1);
   }
   i = 0;
   for (chan = chanset; chan; chan = chan->next)
     i++;
-  putlog(LOG_MISC, "*", "=== %s: %d channels, %d users.",
+  putlog(LOG_MISC, "*", _("=== %s: %d channels, %d users."),
          botnetnick, i, count_users(userlist));
 #ifdef TLS
   ssl_init();
@@ -1105,8 +1119,9 @@
     i = kill(xx, SIGCHLD);      /* Meaningless kill to determine if pid
                                  * is used */
     if (i == 0 || errno != ESRCH) {
-      printf(EGG_RUNNING1, botnetnick);
-      printf(EGG_RUNNING2, pid_file);
+      printf(_("I detect %s already running from this directory.\n"),
+             botnetnick);
+      printf(_("If this is incorrect, erase the '%s'\n"), pid_file);
       bg_send_quit(BG_ABORT);
       exit(1);
     }
@@ -1127,13 +1142,13 @@
         fprintf(fp, "%u\n", xx);
         if (fflush(fp)) {
           /* Let the bot live since this doesn't appear to be a botchk */
-          printf(EGG_NOWRITE, pid_file);
+          printf(_("* Warning! Could not write %s file!\n"), pid_file);
           fclose(fp);
           unlink(pid_file);
         } else
           fclose(fp);
       } else
-        printf(EGG_NOWRITE, pid_file);
+        printf(_("* Warning! Could not write %s file!\n"), pid_file);
     }
   }
 
@@ -1172,7 +1187,7 @@
       dcc[n].user = get_user_by_handle(userlist, dcc[n].nick);
     }
     setsock(STDOUT, 0);          /* Entry in net table */
-    dprintf(n, "\n### ENTERING DCC CHAT SIMULATION ###\n\n");
+    dprintf(n, _("\n### ENTERING DCC CHAT SIMULATION ###\n\n"));
     dcc_chatter(n);
   }
 
Index: eggdrop1.8/src/main.h
diff -u eggdrop1.8/src/main.h:1.3.2.1 eggdrop1.8/src/main.h:1.3.2.2
--- eggdrop1.8/src/main.h:1.3.2.1	Sat Nov  6 14:57:41 2010
+++ eggdrop1.8/src/main.h	Wed Nov 10 07:39:19 2010
@@ -2,7 +2,7 @@
  * main.h
  *   include file to include most other include files
  *
- * $Id: main.h,v 1.3.2.1 2010/11/06 20:57:41 pseudo Exp $
+ * $Id: main.h,v 1.3.2.2 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -120,7 +120,7 @@
 #include "gettext.h"
 
 /* Provide shorter names, as we'll be using these in a lot of places */
-#define _(x)         gettext(x)
+#define _(x)         ((char *) gettext(x))
 #define N_(x)        gettext_noop(x)
 #define P_(x, y, z)  ngettext(x, y, z)
 
Index: eggdrop1.8/src/misc.c
diff -u eggdrop1.8/src/misc.c:1.2 eggdrop1.8/src/misc.c:1.2.2.1
--- eggdrop1.8/src/misc.c:1.2	Sat Oct 23 05:16:12 2010
+++ eggdrop1.8/src/misc.c	Wed Nov 10 07:39:19 2010
@@ -7,7 +7,7 @@
  *   help system
  *   motd display and %var substitution
  *
- * $Id: misc.c,v 1.2 2010/10/23 11:16:12 pseudo Exp $
+ * $Id: misc.c,v 1.2.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -465,7 +465,7 @@
   if (now - then > 86400) {
     int days = (now - then) / 86400;
 
-    sprintf(out, "%d day%s ago", days, (days == 1) ? "" : "s");
+    sprintf(out, P_("a day ago", "%d days ago", days), days);
     return;
   }
   egg_strftime(out, 6, "%H:%M", localtime(&then));
@@ -479,10 +479,10 @@
   if (now - then > 86400) {
     int days = (now - then) / 86400;
 
-    sprintf(out, "in %d day%s", days, (days == 1) ? "" : "s");
+    sprintf(out, P_("in a day", "in %d days", days), days);
     return;
   }
-  egg_strftime(out, 9, "at %H:%M", localtime(&now));
+  egg_strftime(out, 20, _("at %H:%M"), localtime(&now));
 }
 
 /* Convert an interval (in seconds) to one of:
@@ -490,21 +490,18 @@
  */
 void daysdur(time_t now, time_t then, char *out)
 {
-  char s[81];
   int hrs, mins;
 
   if (now - then > 86400) {
     int days = (now - then) / 86400;
 
-    sprintf(out, "for %d day%s", days, (days == 1) ? "" : "s");
+    sprintf(out, P_("for one day", "for %d days", days), days);
     return;
   }
-  strcpy(out, "for ");
   now -= then;
   hrs = (int) (now / 3600);
   mins = (int) ((now - (hrs * 3600)) / 60);
-  sprintf(s, "%02d:%02d", hrs, mins);
-  strcat(out, s);
+  sprintf(out, "for %02d:%02d", hrs, mins);
 }
 
 
@@ -602,7 +599,7 @@
                * so put that in the file first.
                */
               fprintf(logs[i].f, stamp);
-              fprintf(logs[i].f, MISC_LOGREPEAT, logs[i].repeats);
+              fprintf(logs[i].f, _("Last message repeated %d time(s).\n"), logs[i].repeats);
               logs[i].repeats = 0;
               /* No need to reset logs[i].szlast here
                * because we update it later on...
@@ -645,7 +642,7 @@
   if (s && s2 && !strcmp(s, s2))
     return;
 
-  debug0("Logfile suffix changed. Closing all open logs.");
+  debug0(_("Logfile suffix changed. Closing all open logs."));
   strcpy(logfile_suffix, s);
   while (s2[0]) {
     if (s2[0] == ' ')
@@ -678,7 +675,8 @@
         if ((ss.st_size >> 10) > max_logsize) {
           if (logs[i].f) {
             /* write to the log before closing it huh.. */
-            putlog(LOG_MISC, "*", MISC_CLOGS, logs[i].filename, ss.st_size);
+            putlog(LOG_MISC, "*", _("Cycling logfile %s  over max-logsize "
+                   "(%d)"), logs[i].filename, ss.st_size);
             fflush(logs[i].f);
             fclose(logs[i].f);
             logs[i].f = NULL;
@@ -717,7 +715,8 @@
 
         egg_strftime(stamp, sizeof(stamp) - 1, log_ts, localtime(&now));
         fprintf(logs[i].f, "%s ", stamp);
-        fprintf(logs[i].f, MISC_LOGREPEAT, logs[i].repeats);
+        fprintf(logs[i].f, _("Last message repeated %d time(s).\n"),
+                logs[i].repeats);
         /* Reset repeats */
         logs[i].repeats = 0;
       }
@@ -907,7 +906,9 @@
         towrite = sub;
       } else
 #endif
-        towrite = "*UNKNOWN*";
+        /* That's a substitution string for unknown text substitution variables
+           found in help files and motds */
+        towrite = _("*UNKNOWN*");
       break;
     case 'B':
       towrite = (isdcc ? botnetnick : botname);
@@ -1163,7 +1164,7 @@
   struct help_list_t *item;
 
   for (current = help_list; current; current = current->next) {
-    dprintf(idx, "HELP FILE(S): %s\n", current->name);
+    dprintf(idx, _("HELP FILE(S): %s\n"), current->name);
     for (item = current->first; item; item = item->next) {
       dprintf(idx, "   %s (%s)\n", item->name, (item->type == 0) ? "msg/" :
               (item->type == 1) ? "" : "set/");
@@ -1233,7 +1234,7 @@
     fclose(f);
   }
   if (!lines && !(fl & HELP_TEXT))
-    dprintf(DP_HELP, "NOTICE %s :%s\n", who, IRC_NOHELP2);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", who, _("No help available on that."));
 }
 
 static int display_tellhelp(int idx, char *file, FILE *f,
@@ -1272,7 +1273,7 @@
   if (f)
     lines = display_tellhelp(idx, file, f, flags);
   if (!lines && !(fl & HELP_TEXT))
-    dprintf(idx, "%s\n", IRC_NOHELP2);
+    dprintf(idx, "%s\n", _("No help available on that."));
 }
 
 /* Same as tellallhelp, just using wild_match instead of strcmp
@@ -1296,7 +1297,7 @@
           display_tellhelp(idx, item->name, f, flags);
       }
   if (!s[0])
-    dprintf(idx, "%s\n", IRC_NOHELP2);
+    dprintf(idx, "%s\n", _("No help available on that."));
 }
 
 /* Same as tellwildhelp, just using strcmp instead of wild_match
@@ -1321,7 +1322,7 @@
           display_tellhelp(idx, item->name, f, flags);
       }
   if (!s[0])
-    dprintf(idx, "%s\n", IRC_NOHELP2);
+    dprintf(idx, "%s\n", _("No help available on that."));
 }
 
 /* Substitute vars in a lang text to dcc chatter
Index: eggdrop1.8/src/patch.h
diff -u eggdrop1.8/src/patch.h:1.25.2.2 eggdrop1.8/src/patch.h:1.25.2.3
--- eggdrop1.8/src/patch.h:1.25.2.2	Mon Nov  8 04:02:31 2010
+++ eggdrop1.8/src/patch.h	Wed Nov 10 07:39:19 2010
@@ -10,7 +10,7 @@
  * statement, leave the rest of the file alone, this allows better
  * overlapping patches.
  *
- * $Id: patch.h,v 1.25.2.2 2010/11/08 10:02:31 pseudo Exp $
+ * $Id: patch.h,v 1.25.2.3 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -41,12 +41,12 @@
  *
  *
  */
-patch("1289210474");            /* current unixtime */
+patch("1289396336");            /* current unixtime */
 /*
  *
  *
  */
-patch("lang2gettext-1");
+patch("lang2gettext-core");
 /*
  *
  *
Index: eggdrop1.8/src/tcldcc.c
diff -u eggdrop1.8/src/tcldcc.c:1.4 eggdrop1.8/src/tcldcc.c:1.4.2.1
--- eggdrop1.8/src/tcldcc.c:1.4	Wed Oct 20 07:07:13 2010
+++ eggdrop1.8/src/tcldcc.c	Wed Nov 10 07:39:19 2010
@@ -2,7 +2,7 @@
  * tcldcc.c -- handles:
  *   Tcl stubs for the dcc commands
  *
- * $Id: tcldcc.c,v 1.4 2010/10/20 13:07:13 pseudo Exp $
+ * $Id: tcldcc.c,v 1.4.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -874,7 +874,7 @@
   if (sock < 0) {
     switch (sock) {
       case -3:
-        Tcl_AppendResult(irp, MISC_NOFREESOCK, NULL);
+        Tcl_AppendResult(irp, _("No free sockets available."), NULL);
         break;
       case -2:
         Tcl_AppendResult(irp, "DNS lookup failed", NULL);
@@ -1081,12 +1081,12 @@
   BADARGS(1, 1, "");
 
   if (make_userfile) {
-    putlog(LOG_MISC, "*", USERF_NONEEDNEW);
+    putlog(LOG_MISC, "*", _("Userfile creation not necessary--skipping"));
     make_userfile = 0;
   }
   write_userfile(-1);
 
-  putlog(LOG_MISC, "*", USERF_REHASHING);
+  putlog(LOG_MISC, "*", _("Rehashing..."));
   do_restart = -2;
   return TCL_OK;
 }
@@ -1100,11 +1100,11 @@
     return TCL_ERROR;
   }
   if (make_userfile) {
-    putlog(LOG_MISC, "*", USERF_NONEEDNEW);
+    putlog(LOG_MISC, "*", _("Userfile creation not necessary--skipping"));
     make_userfile = 0;
   }
   write_userfile(-1);
-  putlog(LOG_MISC, "*", MISC_RESTARTING);
+  putlog(LOG_MISC, "*", _("Restarting..."));
   wipe_timers(interp, &utimer);
   wipe_timers(interp, &timer);
   do_restart = -1;
Index: eggdrop1.8/src/tclmisc.c
diff -u eggdrop1.8/src/tclmisc.c:1.5 eggdrop1.8/src/tclmisc.c:1.5.2.1
--- eggdrop1.8/src/tclmisc.c:1.5	Wed Oct 27 14:47:26 2010
+++ eggdrop1.8/src/tclmisc.c	Wed Nov 10 07:39:19 2010
@@ -2,7 +2,7 @@
  * tclmisc.c -- handles:
  *   Tcl stubs for everything else
  *
- * $Id: tclmisc.c,v 1.5 2010/10/27 20:47:26 pseudo Exp $
+ * $Id: tclmisc.c,v 1.5.2.1 2010/11/10 13:39:19 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -553,8 +553,8 @@
   BADARGS(2, 2, " module-name");
 
   p = module_load(argv[1]);
-  if (p && strcmp(p, MOD_ALREADYLOAD) && !strcmp(argv[0], "loadmodule"))
-    putlog(LOG_MISC, "*", "%s %s: %s", MOD_CANTLOADMOD, argv[1], p);
+  if (p && strcmp(p, "Already loaded.") && !strcmp(argv[0], "loadmodule"))
+    putlog(LOG_MISC, "*", _("Can't load modules %s: %s"), argv[1], p);
   Tcl_AppendResult(irp, p, NULL);
   return TCL_OK;
 }
----------------------- End of diff -----------------------


More information about the Changes mailing list