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

cvs at eggheads.org cvs at eggheads.org
Thu Nov 11 14:34:57 CST 2010


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

Modified files:
  Tag: gettext
     doc/Changes1.8 src/patch.h src/mod/channels.mod/channels.c
     src/mod/channels.mod/cmdschan.c src/mod/channels.mod/userchan.c
     src/mod/transfer.mod/transfer.c src/mod/transfer.mod/transfer.h
     src/mod/transfer.mod/transferqueue.c
     src/mod/transfer.mod/language/transfer.english.lang

Log message:

Converted the channels and transfer modules to gettext.

---------------------- diff included ----------------------
Index: eggdrop1.8/doc/Changes1.8
diff -u eggdrop1.8/doc/Changes1.8:1.36.2.4 eggdrop1.8/doc/Changes1.8:1.36.2.5
--- eggdrop1.8/doc/Changes1.8:1.36.2.4	Wed Nov 10 15:16:56 2010
+++ eggdrop1.8/doc/Changes1.8	Thu Nov 11 14:34:46 2010
@@ -1,4 +1,4 @@
-$Id: Changes1.8,v 1.36.2.4 2010/11/10 21:16:56 pseudo Exp $
+$Id: Changes1.8,v 1.36.2.5 2010/11/11 20:34:46 pseudo Exp $
 
 Eggdrop Changes (since version 1.8.0)
 
@@ -6,6 +6,9 @@
 
 1.8.0 (CVS):
 
+  - Converted the channels and transfer modules to gettext.
+    Patch by: pseudo
+
   - Converted the assoc, blowfish, console, compress, dns, share, uptime
     and woobie modules to gettext.
     Patch by: pseudo
Index: eggdrop1.8/src/mod/channels.mod/channels.c
diff -u eggdrop1.8/src/mod/channels.mod/channels.c:1.2 eggdrop1.8/src/mod/channels.mod/channels.c:1.2.2.1
--- eggdrop1.8/src/mod/channels.mod/channels.c:1.2	Tue Jul 27 15:49:42 2010
+++ eggdrop1.8/src/mod/channels.mod/channels.c	Thu Nov 11 14:34:47 2010
@@ -2,7 +2,7 @@
  * channels.c -- part of channels.mod
  *   support for channels within the bot
  *
- * $Id: channels.c,v 1.2 2010/07/27 21:49:42 pseudo Exp $
+ * $Id: channels.c,v 1.2.2.1 2010/11/11 20:34:47 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -394,11 +394,11 @@
   f = fopen(s, "w");
   chmod(s, userfile_perm);
   if (f == NULL) {
-    putlog(LOG_MISC, "*", "ERROR writing channel file.");
+    putlog(LOG_MISC, "*", _("ERROR writing channel file."));
     return;
   }
   if (!quiet_save)
-    putlog(LOG_MISC, "*", "Writing channel file...");
+    putlog(LOG_MISC, "*", _("Writing channel file..."));
   fprintf(f, "#Dynamic Channel File for %s (%s) -- written %s\n",
           botnetnick, ver, ctime(&now));
   for (chan = chanset; chan; chan = chan->next) {
@@ -478,7 +478,7 @@
       }
     }
     if (fflush(f)) {
-      putlog(LOG_MISC, "*", "ERROR writing channel file.");
+      putlog(LOG_MISC, "*", _("ERROR writing channel file."));
       fclose(f);
       return;
     }
@@ -504,10 +504,10 @@
     FILE *f;
 
     /* Assume file isnt there & therfore make it */
-    putlog(LOG_MISC, "*", "Creating channel file");
+    putlog(LOG_MISC, "*", _("Creating channel file"));
     f = fopen(chanfile, "w");
     if (!f)
-      putlog(LOG_MISC, "*", "Couldn't create channel file: %s.  Dropping",
+      putlog(LOG_MISC, "*", _("Couldn't create channel file: %s.  Dropping"),
              chanfile);
     else
       fclose(f);
@@ -518,7 +518,7 @@
   for (chan = chanset; chan; chan = chan_next) {
     chan_next = chan->next;
     if (chan->status & CHAN_FLAGGED) {
-      putlog(LOG_MISC, "*", "No longer supporting channel %s", chan->dname);
+      putlog(LOG_MISC, "*", _("No longer supporting channel %s"), chan->dname);
       remove_channel(chan);
     }
   }
@@ -529,7 +529,7 @@
   char s[125];
 
   if (quiet_save < 2)
-    putlog(LOG_MISC, "*", "Backing up channel file...");
+    putlog(LOG_MISC, "*", _("Backing up channel file..."));
   egg_snprintf(s, sizeof s, "%s~bak", chanfile);
   copyfile(chanfile, s);
 }
@@ -573,11 +573,11 @@
     sprintf(s, "    %-20s: ", chan->dname);
 
     if (channel_inactive(chan))
-      strcat(s, "(inactive)");
+      strcat(s, _("(inactive)"));
     else if (channel_pending(chan))
-      strcat(s, "(pending)");
+      strcat(s, _("(pending)"));
     else if (!channel_active(chan))
-      strcat(s, "(not on channel)");
+      strcat(s, _("(not on channel)"));
     else {
 
       s1[0] = 0;
@@ -590,7 +590,7 @@
 
       if (s2[0]) {
         s1[0] = 0;
-        sprintf(s1, ", enforcing \"%s\"", s2);
+        sprintf(s1, _(", enforcing \"%s\""), s2);
         strcat(s, s1);
       }
 
@@ -678,28 +678,29 @@
       if (channel_nodesynch(chan))
         i += my_strcpy(s + i, "nodesynch ");
 
-      dprintf(idx, "      Options: %s\n", s);
+      dprintf(idx, _("      Options: %s\n"), s);
 
       if (chan->need_op[0])
-        dprintf(idx, "      To get ops, I do: %s\n", chan->need_op);
+        dprintf(idx, _("      To get ops, I do: %s\n"), chan->need_op);
 
       if (chan->need_invite[0])
-        dprintf(idx, "      To get invited, I do: %s\n", chan->need_invite);
+        dprintf(idx, _("      To get invited, I do: %s\n"), chan->need_invite);
 
       if (chan->need_limit[0])
-        dprintf(idx, "      To get the channel limit raised, I do: %s\n",
+        dprintf(idx, _("      To get the channel limit raised, I do: %s\n"),
                 chan->need_limit);
 
       if (chan->need_unban[0])
-        dprintf(idx, "      To get unbanned, I do: %s\n", chan->need_unban);
+        dprintf(idx, _("      To get unbanned, I do: %s\n"), chan->need_unban);
 
       if (chan->need_key[0])
-        dprintf(idx, "      To get the channel key, I do: %s\n",
+        dprintf(idx, _("      To get the channel key, I do: %s\n"),
                 chan->need_key);
 
       if (chan->idle_kick)
-        dprintf(idx, "      Kicking idle users after %d minute%s\n",
-                chan->idle_kick, (chan->idle_kick != 1) ? "s" : "");
+        dprintf(idx, P_("      Kicking idle users after a minute\n",
+                "      Kicking idle users after %d minutes\n",
+                chan->idle_kick), chan->idle_kick);
 
       if (chan->stopnethack_mode)
         dprintf(idx, "      stopnethack-mode: %d\n", chan->stopnethack_mode);
@@ -708,12 +709,13 @@
         dprintf(idx, "      revenge-mode: %d\n", chan->revenge_mode);
 
       dprintf(idx, "      ban-type: %d\n", chan->ban_type);
-      dprintf(idx, "      Bans last %d minute%s.\n", chan->ban_time,
-               (chan->ban_time == 1) ? "" : "s");
-      dprintf(idx, "      Exemptions last %d minute%s.\n", chan->exempt_time,
-               (chan->exempt_time == 1) ? "" : "s");
-      dprintf(idx, "      Invitations last %d minute%s.\n", chan->invite_time,
-               (chan->invite_time == 1) ? "" : "s");
+      dprintf(idx, P_("      Bans last one minute.\n", "      Bans last "
+              "%d minutes.\n", chan->ban_time), chan->ban_time);
+      dprintf(idx, P_("      Exempts last one minute.\n", "      Exempts last "
+              "%d minutes.\n", chan->exempt_time), chan->exempt_time);
+      dprintf(idx, P_("      Invitations last one minute.\n",
+              "      Invitations last %d minutes.\n", chan->invite_time),
+              chan->invite_time);
     }
   }
 }
@@ -994,7 +996,7 @@
   module_register(MODULE_NAME, channels_table, 1, 2);
   if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) {
     module_undepend(MODULE_NAME);
-    return "This module requires Eggdrop 1.8.0 or later.";
+    return _("This module requires Eggdrop 1.8.0 or later.");
   }
   add_hook(HOOK_MINUTELY, (Function) check_expired_bans);
   add_hook(HOOK_MINUTELY, (Function) check_expired_exempts);
Index: eggdrop1.8/src/mod/channels.mod/cmdschan.c
diff -u eggdrop1.8/src/mod/channels.mod/cmdschan.c:1.3 eggdrop1.8/src/mod/channels.mod/cmdschan.c:1.3.2.1
--- eggdrop1.8/src/mod/channels.mod/cmdschan.c:1.3	Mon Oct 11 02:46:10 2010
+++ eggdrop1.8/src/mod/channels.mod/cmdschan.c	Thu Nov 11 14:34:47 2010
@@ -2,7 +2,7 @@
  * cmdschan.c -- part of channels.mod
  *   commands from a user via dcc that cause server interaction
  *
- * $Id: cmdschan.c,v 1.3 2010/10/11 08:46:10 pseudo Exp $
+ * $Id: cmdschan.c,v 1.3.2.1 2010/11/11 20:34:47 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -38,7 +38,7 @@
   module_entry *me;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +ban <hostmask> [channel] [%%<XdXhXm>] [reason]\n");
+    dprintf(idx, _("Usage: +ban <hostmask> [channel] [%%<XdXhXm>] [reason]\n"));
   } else {
     who = newsplit(&par);
     if (par[0] && strchr(CHANMETA, par[0]))
@@ -52,11 +52,11 @@
       chan = findchan_by_dname(chname);
       /* *shrug* ??? (guppy:10Feb1999) */
       if (!chan) {
-        dprintf(idx, "That channel doesn't exist!\n");
+        dprintf(idx, _("That channel doesn't exist!\n"));
         return;
       } else if (!((glob_op(user) && !chan_deop(user)) || (glob_halfop(user) &&
                !chan_dehalfop(user)) || chan_op(user) || chan_halfop(user))) {
-        dprintf(idx, "You don't have access to set bans on %s.\n", chname);
+        dprintf(idx, _("You don't have access to set bans on %s.\n"), chname);
         return;
       }
     } else
@@ -94,7 +94,7 @@
       }
     }
     if (!par[0])
-      par = "requested";
+      par = _("requested");
     else if (strlen(par) > MASKREASON_MAX)
       par[MASKREASON_MAX] = 0;
     if (strlen(who) > UHOSTMAX - 4)
@@ -113,7 +113,7 @@
       egg_snprintf(s1, sizeof s1, "%s!%s", me->funcs[SERVER_BOTNAME],
                    me->funcs[SERVER_BOTUSERHOST]);
       if (match_addr(s, s1)) {
-        dprintf(idx, "I'm not going to ban myself.\n");
+        dprintf(idx, _("I'm not going to ban myself.\n"));
         putlog(LOG_CMDS, "*", "#%s# attempted +ban %s", dcc[idx].nick, s);
         return;
       }
@@ -131,11 +131,11 @@
           par++;
           putlog(LOG_CMDS, "*", "#%s# (%s) +ban %s %s (%s) (sticky)",
                  dcc[idx].nick, dcc[idx].u.chat->con_chan, s, chan->dname, par);
-          dprintf(idx, "New %s sticky ban: %s (%s)\n", chan->dname, s, par);
+          dprintf(idx, _("New %s sticky ban: %s (%s)\n"), chan->dname, s, par);
         } else {
           putlog(LOG_CMDS, "*", "#%s# (%s) +ban %s %s (%s)", dcc[idx].nick,
                  dcc[idx].u.chat->con_chan, s, chan->dname, par);
-          dprintf(idx, "New %s ban: %s (%s)\n", chan->dname, s, par);
+          dprintf(idx, _("New %s ban: %s (%s)\n"), chan->dname, s, par);
         }
         /* Avoid unnesessary modes if you got +dynamicbans, and there is
          * no reason to set mode if irc.mod aint loaded. (dw 001120)
@@ -148,13 +148,13 @@
         if (par[0] == '*') {
           sticky = 1;
           par++;
-          putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +ban %s (%s) (sticky)",
+          putlog(LOG_CMDS, "*", _("#%s# (GLOBAL) +ban %s (%s) (sticky)"),
                  dcc[idx].nick, s, par);
-          dprintf(idx, "New sticky ban: %s (%s)\n", s, par);
+          dprintf(idx, _("New sticky ban: %s (%s)\n"), s, par);
         } else {
           putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +ban %s (%s)", dcc[idx].nick,
                  s, par);
-          dprintf(idx, "New ban: %s (%s)\n", s, par);
+          dprintf(idx, _("New ban: %s (%s)\n"), s, par);
         }
         if ((me = module_find("irc", 0, 0)))
           for (chan = chanset; chan != NULL; chan = chan->next)
@@ -170,11 +170,13 @@
   struct chanset_t *chan = NULL;
 
   if (!use_exempts) {
-    dprintf(idx, "This command can only be used with use-exempts enabled.\n");
+    dprintf(idx, _("This command can only be used with use-exempts "
+            "enabled.\n"));
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "Usage: +exempt <hostmask> [channel] [%%<XdXhXm>] [reason]\n");
+    dprintf(idx, _("Usage: +exempt <hostmask> [channel] [%%<XdXhXm>] "
+            "[reason]\n"));
   } else {
     who = newsplit(&par);
     if (par[0] && strchr(CHANMETA, par[0]))
@@ -188,11 +190,12 @@
       chan = findchan_by_dname(chname);
       /* *shrug* ??? (guppy:10Feb99) */
       if (!chan) {
-        dprintf(idx, "That channel doesn't exist!\n");
+        dprintf(idx, _("That channel doesn't exist!\n"));
         return;
       } else if (!((glob_op(user) && !chan_deop(user)) || (glob_halfop(user) &&
                !chan_dehalfop(user)) || chan_op(user) || chan_halfop(user))) {
-        dprintf(idx, "You don't have access to set exempts on %s.\n", chname);
+        dprintf(idx, _("You don't have access to set exempts on %s.\n"),
+                chname);
         return;
       }
     } else
@@ -258,11 +261,11 @@
         par++;
         putlog(LOG_CMDS, "*", "#%s# (%s) +exempt %s %s (%s) (sticky)",
                dcc[idx].nick, dcc[idx].u.chat->con_chan, s, chan->dname, par);
-        dprintf(idx, "New %s sticky exempt: %s (%s)\n", chan->dname, s, par);
+        dprintf(idx, _("New %s sticky exempt: %s (%s)\n"), chan->dname, s, par);
       } else {
         putlog(LOG_CMDS, "*", "#%s# (%s) +exempt %s %s (%s)", dcc[idx].nick,
                dcc[idx].u.chat->con_chan, s, chan->dname, par);
-        dprintf(idx, "New %s exempt: %s (%s)\n", chan->dname, s, par);
+        dprintf(idx, _("New %s exempt: %s (%s)\n"), chan->dname, s, par);
       }
       add_mode(chan, '+', 'e', s);
     } else {
@@ -270,13 +273,13 @@
                   expire_time ? now + expire_time : 0, 0);
       if (par[0] == '*') {
         par++;
-        putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +exempt %s (%s) (sticky)",
+        putlog(LOG_CMDS, "*", _("#%s# (GLOBAL) +exempt %s (%s) (sticky)"),
                dcc[idx].nick, s, par);
-        dprintf(idx, "New sticky exempt: %s (%s)\n", s, par);
+        dprintf(idx, _("New sticky exempt: %s (%s)\n"), s, par);
       } else {
         putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +exempt %s (%s)", dcc[idx].nick,
                s, par);
-        dprintf(idx, "New exempt: %s (%s)\n", s, par);
+        dprintf(idx, _("New exempt: %s (%s)\n"), s, par);
       }
       for (chan = chanset; chan != NULL; chan = chan->next)
         add_mode(chan, '+', 'e', s);
@@ -291,12 +294,14 @@
   struct chanset_t *chan = NULL;
 
   if (!use_invites) {
-    dprintf(idx, "This command can only be used with use-invites enabled.\n");
+    dprintf(idx, _("This command can only be used with use-invites "
+            "enabled.\n"));
     return;
   }
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +invite <hostmask> [channel] [%%<XdXhXm>] [reason]\n");
+    dprintf(idx, _("Usage: +invite <hostmask> [channel] [%%<XdXhXm>] "
+            "[reason]\n"));
   } else {
     who = newsplit(&par);
     if (par[0] && strchr(CHANMETA, par[0]))
@@ -310,11 +315,11 @@
       chan = findchan_by_dname(chname);
       /* *shrug* ??? (guppy:10Feb99) */
       if (!chan) {
-        dprintf(idx, "That channel doesn't exist!\n");
+        dprintf(idx, _("That channel doesn't exist!\n"));
         return;
       } else if (!((glob_op(user) && !chan_deop(user)) || (glob_halfop(user) &&
                !chan_dehalfop(user)) || chan_op(user) || chan_halfop(user))) {
-        dprintf(idx, "You don't have access to set invites on %s.\n", chname);
+        dprintf(idx, _("You don't have access to set invites on %s.\n"), chname);
         return;
       }
     } else
@@ -352,7 +357,7 @@
       }
     }
     if (!par[0])
-      par = "requested";
+      par = _("requested");
     else if (strlen(par) > MASKREASON_MAX)
       par[MASKREASON_MAX] = 0;
     if (strlen(who) > UHOSTMAX - 4)
@@ -380,11 +385,11 @@
         par++;
         putlog(LOG_CMDS, "*", "#%s# (%s) +invite %s %s (%s) (sticky)",
                dcc[idx].nick, dcc[idx].u.chat->con_chan, s, chan->dname, par);
-        dprintf(idx, "New %s sticky invite: %s (%s)\n", chan->dname, s, par);
+        dprintf(idx, _("New %s sticky invite: %s (%s)\n"), chan->dname, s, par);
       } else {
         putlog(LOG_CMDS, "*", "#%s# (%s) +invite %s %s (%s)", dcc[idx].nick,
                dcc[idx].u.chat->con_chan, s, chan->dname, par);
-        dprintf(idx, "New %s invite: %s (%s)\n", chan->dname, s, par);
+        dprintf(idx, _("New %s invite: %s (%s)\n"), chan->dname, s, par);
       }
       add_mode(chan, '+', 'I', s);
     } else {
@@ -392,13 +397,13 @@
                   expire_time ? now + expire_time : 0, 0);
       if (par[0] == '*') {
         par++;
-        putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +invite %s (%s) (sticky)",
+        putlog(LOG_CMDS, "*", _("#%s# (GLOBAL) +invite %s (%s) (sticky)"),
                dcc[idx].nick, s, par);
-        dprintf(idx, "New sticky invite: %s (%s)\n", s, par);
+        dprintf(idx, _("New sticky invite: %s (%s)\n"), s, par);
       } else {
-        putlog(LOG_CMDS, "*", "#%s# (GLOBAL) +invite %s (%s)", dcc[idx].nick,
+        putlog(LOG_CMDS, "*", _("#%s# (GLOBAL) +invite %s (%s)"), dcc[idx].nick,
                s, par);
-        dprintf(idx, "New invite: %s (%s)\n", s, par);
+        dprintf(idx, _("New invite: %s (%s)\n"), s, par);
       }
       for (chan = chanset; chan != NULL; chan = chan->next)
         add_mode(chan, '+', 'I', s);
@@ -414,7 +419,7 @@
   masklist *b;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -ban <hostmask|ban #> [channel]\n");
+    dprintf(idx, _("Usage: -ban <hostmask|ban #> [channel]\n"));
     return;
   }
   ban = newsplit(&par);
@@ -431,7 +436,7 @@
 
     if ((!chan_op(user) && (!glob_op(user) || chan_deop(user))) &&
         (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) {
-      dprintf(idx, "You don't have access to remove bans on %s.\n", chname);
+      dprintf(idx, _("You don't have access to remove bans on %s.\n"), chname);
       return;
     }
   }
@@ -444,7 +449,7 @@
       else
         mask = s;
       putlog(LOG_CMDS, "*", "#%s# -ban %s", dcc[idx].nick, mask);
-      dprintf(idx, "%s: %s\n", IRC_REMOVEDBAN, mask);
+      dprintf(idx, _("Removed ban: %s\n"), mask);
       for (chan = chanset; chan != NULL; chan = chan->next)
         add_mode(chan, '-', 'b', mask);
       return;
@@ -454,7 +459,7 @@
   if (chname)
     chan = findchan_by_dname(chname);
   if (!chan) {
-    dprintf(idx, "Invalid channel.\n");
+    dprintf(idx, _("Invalid channel.\n"));
     return;
   }
   if (str_isdigit(ban)) {
@@ -472,7 +477,7 @@
           mask = s;
         putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s", dcc[idx].nick, chan->dname,
                mask);
-        dprintf(idx, "Removed %s channel ban: %s\n", chan->dname, mask);
+        dprintf(idx, _("Removed %s channel ban: %s\n"), chan->dname, mask);
         add_mode(chan, '-', 'b', mask);
         return;
       }
@@ -484,8 +489,7 @@
         i++;
         if (i == -j) {
           add_mode(chan, '-', 'b', b->mask);
-          dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDBAN,
-                  b->mask, chan->dname);
+          dprintf(idx, _("Removed ban '%s' on %s.\n"), b->mask, chan->dname);
           putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s [on channel]",
                  dcc[idx].nick, dcc[idx].u.chat->con_chan, ban);
           return;
@@ -497,21 +501,21 @@
     if (j > 0) {
       putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s", dcc[idx].nick,
              dcc[idx].u.chat->con_chan, ban);
-      dprintf(idx, "Removed %s channel ban: %s\n", chname, ban);
+      dprintf(idx, _("Removed %s channel ban: %s\n"), chname, ban);
       add_mode(chan, '-', 'b', ban);
       return;
     }
     for (b = chan->channel.ban; b && b->mask && b->mask[0]; b = b->next) {
       if (!rfc_casecmp(b->mask, ban)) {
         add_mode(chan, '-', 'b', b->mask);
-        dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDBAN, b->mask, chan->dname);
+        dprintf(idx, _("Removed ban '%s' on %s.\n"), b->mask, chan->dname);
         putlog(LOG_CMDS, "*", "#%s# (%s) -ban %s [on channel]",
                dcc[idx].nick, dcc[idx].u.chat->con_chan, ban);
         return;
       }
     }
   }
-  dprintf(idx, "No such ban.\n");
+  dprintf(idx, _("No such ban.\n"));
 }
 
 static void cmd_mns_exempt(struct userrec *u, int idx, char *par)
@@ -522,11 +526,12 @@
   masklist *e;
 
   if (!use_exempts) {
-    dprintf(idx, "This command can only be used with use-exempts enabled.\n");
+    dprintf(idx, _("This command can only be used with use-exempts "
+            "enabled.\n"));
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "Usage: -exempt <hostmask|exempt #> [channel]\n");
+    dprintf(idx, _("Usage: -exempt <hostmask|exempt #> [channel]\n"));
     return;
   }
   exempt = newsplit(&par);
@@ -542,7 +547,8 @@
     get_user_flagrec(u, &user, chname);
     if ((!chan_op(user) && (!glob_op(user) || chan_deop(user))) &&
         (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) {
-      dprintf(idx, "You don't have access to remove exempts on %s.\n", chname);
+      dprintf(idx, _("You don't have access to remove exempts on %s.\n"),
+              chname);
       return;
     }
   }
@@ -555,7 +561,7 @@
       else
         mask = s;
       putlog(LOG_CMDS, "*", "#%s# -exempt %s", dcc[idx].nick, mask);
-      dprintf(idx, "%s: %s\n", IRC_REMOVEDEXEMPT, mask);
+      dprintf(idx, _("Removed exempt: %s\n"), mask);
       for (chan = chanset; chan != NULL; chan = chan->next)
         add_mode(chan, '-', 'e', mask);
       return;
@@ -565,7 +571,7 @@
   if (chname)
     chan = findchan_by_dname(chname);
   if (!chan) {
-    dprintf(idx, "Invalid channel.\n");
+    dprintf(idx, _("Invalid channel.\n"));
     return;
   }
   if (str_isdigit(exempt)) {
@@ -583,7 +589,7 @@
           mask = s;
         putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
                chan->dname, mask);
-        dprintf(idx, "Removed %s channel exempt: %s\n", chan->dname, mask);
+        dprintf(idx, _("Removed %s channel exempt: %s\n"), chan->dname, mask);
         add_mode(chan, '-', 'e', mask);
         return;
       }
@@ -595,8 +601,7 @@
         i++;
         if (i == -j) {
           add_mode(chan, '-', 'e', e->mask);
-          dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDEXEMPT,
-                  e->mask, chan->dname);
+          dprintf(idx, _("Removed exempt '%s' on %s.\n"), e->mask, chan->dname);
           putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
                  dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
           return;
@@ -608,22 +613,21 @@
     if (j > 0) {
       putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s", dcc[idx].nick,
              dcc[idx].u.chat->con_chan, exempt);
-      dprintf(idx, "Removed %s channel exempt: %s\n", chname, exempt);
+      dprintf(idx, _("Removed %s channel exempt: %s\n"), chname, exempt);
       add_mode(chan, '-', 'e', exempt);
       return;
     }
     for (e = chan->channel.exempt; e && e->mask && e->mask[0]; e = e->next) {
       if (!rfc_casecmp(e->mask, exempt)) {
         add_mode(chan, '-', 'e', e->mask);
-        dprintf(idx, "%s '%s' on %s.\n",
-                IRC_REMOVEDEXEMPT, e->mask, chan->dname);
+        dprintf(idx, _("Removed exempt '%s' on %s.\n"), e->mask, chan->dname);
         putlog(LOG_CMDS, "*", "#%s# (%s) -exempt %s [on channel]",
                dcc[idx].nick, dcc[idx].u.chat->con_chan, exempt);
         return;
       }
     }
   }
-  dprintf(idx, "No such exemption.\n");
+  dprintf(idx, _("No such exemption.\n"));
 }
 
 static void cmd_mns_invite(struct userrec *u, int idx, char *par)
@@ -634,11 +638,12 @@
   masklist *inv;
 
   if (!use_invites) {
-    dprintf(idx, "This command can only be used with use-invites enabled.\n");
+    dprintf(idx, _("This command can only be used with use-invites "
+            "enabled.\n"));
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "Usage: -invite <hostmask|invite #> [channel]\n");
+    dprintf(idx, _("Usage: -invite <hostmask|invite #> [channel]\n"));
     return;
   }
   invite = newsplit(&par);
@@ -654,7 +659,8 @@
     get_user_flagrec(u, &user, chname);
     if ((!chan_op(user) && (!glob_op(user) || chan_deop(user))) &&
         (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) {
-      dprintf(idx, "You don't have access to remove invites on %s.\n", chname);
+      dprintf(idx, _("You don't have access to remove invites on %s.\n"),
+              chname);
       return;
     }
   }
@@ -667,7 +673,7 @@
       else
         mask = s;
       putlog(LOG_CMDS, "*", "#%s# -invite %s", dcc[idx].nick, mask);
-      dprintf(idx, "%s: %s\n", IRC_REMOVEDINVITE, mask);
+      dprintf(idx, _("Removed invite: %s\n"), mask);
       for (chan = chanset; chan != NULL; chan = chan->next)
         add_mode(chan, '-', 'I', mask);
       return;
@@ -677,7 +683,7 @@
   if (chname)
     chan = findchan_by_dname(chname);
   if (!chan) {
-    dprintf(idx, "Invalid channel.\n");
+    dprintf(idx, _("Invalid channel.\n"));
     return;
   }
   if (str_isdigit(invite)) {
@@ -695,7 +701,7 @@
           mask = s;
         putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
                chan->dname, mask);
-        dprintf(idx, "Removed %s channel invite: %s\n", chan->dname, mask);
+        dprintf(idx, _("Removed %s channel invite: %s\n"), chan->dname, mask);
         add_mode(chan, '-', 'I', mask);
         return;
       }
@@ -708,8 +714,8 @@
         i++;
         if (i == -j) {
           add_mode(chan, '-', 'I', inv->mask);
-          dprintf(idx, "%s '%s' on %s.\n", IRC_REMOVEDINVITE,
-                  inv->mask, chan->dname);
+          dprintf(idx, _("Removed invite '%s' on %s.\n"), inv->mask,
+                  chan->dname);
           putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
                  dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
           return;
@@ -721,7 +727,7 @@
     if (j > 0) {
       putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s", dcc[idx].nick,
              dcc[idx].u.chat->con_chan, invite);
-      dprintf(idx, "Removed %s channel invite: %s\n", chname, invite);
+      dprintf(idx, _("Removed %s channel invite: %s\n"), chname, invite);
       add_mode(chan, '-', 'I', invite);
       return;
     }
@@ -729,15 +735,14 @@
          inv = inv->next) {
       if (!rfc_casecmp(inv->mask, invite)) {
         add_mode(chan, '-', 'I', inv->mask);
-        dprintf(idx, "%s '%s' on %s.\n",
-                IRC_REMOVEDINVITE, inv->mask, chan->dname);
+        dprintf(idx, _("Removed invite '%s' on %s.\n"), inv->mask, chan->dname);
         putlog(LOG_CMDS, "*", "#%s# (%s) -invite %s [on channel]",
                dcc[idx].nick, dcc[idx].u.chat->con_chan, invite);
         return;
       }
     }
   }
-  dprintf(idx, "No such invite.\n");
+  dprintf(idx, _("No such invite.\n"));
 }
 
 static void cmd_bans(struct userrec *u, int idx, char *par)
@@ -754,7 +759,8 @@
 static void cmd_exempts(struct userrec *u, int idx, char *par)
 {
   if (!use_exempts) {
-    dprintf(idx, "This command can only be used with use-exempts enabled.\n");
+    dprintf(idx, _("This command can only be used with use-exempts "
+            "enabled.\n"));
     return;
   }
   if (!egg_strcasecmp(par, "all")) {
@@ -769,7 +775,8 @@
 static void cmd_invites(struct userrec *u, int idx, char *par)
 {
   if (!use_invites) {
-    dprintf(idx, "This command can only be used with use-invites enabled.\n");
+    dprintf(idx, _("This command can only be used with use-invites "
+            "enabled.\n"));
     return;
   }
   if (!egg_strcasecmp(par, "all")) {
@@ -787,7 +794,7 @@
   int locked = 0;
 
   if (!use_info) {
-    dprintf(idx, "Info storage is turned off.\n");
+    dprintf(idx, _("Info storage is turned off.\n"));
     return;
   }
   s1 = get_user(&USERENTRY_INFO, u);
@@ -796,7 +803,7 @@
   if (par[0] && strchr(CHANMETA, par[0])) {
     chname = newsplit(&par);
     if (!findchan_by_dname(chname)) {
-      dprintf(idx, "No such channel.\n");
+      dprintf(idx, _("No such channel.\n"));
       return;
     }
     get_handle_chaninfo(dcc[idx].nick, chname, s);
@@ -810,30 +817,30 @@
       s1++;
     if (s1 && s1[0]) {
       if (chname) {
-        dprintf(idx, "Info on %s: %s\n", chname, s1);
-        dprintf(idx, "Use '.info %s none' to remove it.\n", chname);
+        dprintf(idx, _("Info on %s: %s\n"), chname, s1);
+        dprintf(idx, _("Use '.info %s none' to remove it.\n"), chname);
       } else {
-        dprintf(idx, "Default info: %s\n", s1);
-        dprintf(idx, "Use '.info none' to remove it.\n");
+        dprintf(idx, _("Default info: %s\n"), s1);
+        dprintf(idx, _("Use '.info none' to remove it.\n"));
       }
     } else
-      dprintf(idx, "No info has been set for you.\n");
+      dprintf(idx, _("No info has been set for you.\n"));
     putlog(LOG_CMDS, "*", "#%s# info %s", dcc[idx].nick, chname ? chname : "");
     return;
   }
   if (locked && !(u && (u->flags & USER_MASTER))) {
-    dprintf(idx, "Your info line is locked.  Sorry.\n");
+    dprintf(idx, _("Your info line is locked. Sorry.\n"));
     return;
   }
   if (!egg_strcasecmp(par, "none")) {
     if (chname) {
       par[0] = 0;
       set_handle_chaninfo(userlist, dcc[idx].nick, chname, NULL);
-      dprintf(idx, "Removed your info line on %s.\n", chname);
+      dprintf(idx, _("Removed your info line on %s.\n"), chname);
       putlog(LOG_CMDS, "*", "#%s# info %s none", dcc[idx].nick, chname);
     } else {
       set_user(&USERENTRY_INFO, u, NULL);
-      dprintf(idx, "Removed your default info line.\n");
+      dprintf(idx, _("Removed your default info line.\n"));
       putlog(LOG_CMDS, "*", "#%s# info none", dcc[idx].nick);
     }
     return;
@@ -842,11 +849,11 @@
 /*    par++;              without .tcl, or a tcl script, aka, 'half-assed' -poptix 4Jun01 */
   if (chname) {
     set_handle_chaninfo(userlist, dcc[idx].nick, chname, par);
-    dprintf(idx, "Your info on %s is now: %s\n", chname, par);
+    dprintf(idx, _("Your info on %s is now: %s\n"), chname, par);
     putlog(LOG_CMDS, "*", "#%s# info %s ...", dcc[idx].nick, chname);
   } else {
     set_user(&USERENTRY_INFO, u, par);
-    dprintf(idx, "Your default info is now: %s\n", par);
+    dprintf(idx, _("Your default info is now: %s\n"), par);
     putlog(LOG_CMDS, "*", "#%s# info ...", dcc[idx].nick);
   }
 }
@@ -857,29 +864,29 @@
   struct userrec *u1;
 
   if (!use_info) {
-    dprintf(idx, "Info storage is turned off.\n");
+    dprintf(idx, _("Info storage is turned off.\n"));
     return;
   }
   handle = newsplit(&par);
   if (!handle[0]) {
-    dprintf(idx, "Usage: chinfo <handle> [channel] <new-info>\n");
+    dprintf(idx, _("Usage: chinfo <handle> [channel] <new-info>\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 (par[0] && strchr(CHANMETA, par[0])) {
     chname = newsplit(&par);
     if (!findchan_by_dname(chname)) {
-      dprintf(idx, "No such channel.\n");
+      dprintf(idx, _("No such channel.\n"));
       return;
     }
   } else
     chname = 0;
   if ((u1->flags & USER_BOT) && !(u->flags & USER_MASTER)) {
-    dprintf(idx, "You have to be master to change bots info.\n");
+    dprintf(idx, _("You have to be master to change bots info.\n"));
     return;
   }
   if ((u1->flags & USER_OWNER) && !(u->flags & USER_OWNER)) {
@@ -902,20 +909,21 @@
   if (chname) {
     set_handle_chaninfo(userlist, handle, chname, par);
     if (par[0] == '@')
-      dprintf(idx, "New info (LOCKED) for %s on %s: %s\n", handle, chname,
+      dprintf(idx, _("New info (LOCKED) for %s on %s: %s\n"), handle, chname,
               &par[1]);
     else if (par[0])
-      dprintf(idx, "New info for %s on %s: %s\n", handle, chname, par);
+      dprintf(idx, _("New info for %s on %s: %s\n"), handle, chname, par);
     else
-      dprintf(idx, "Wiped info for %s on %s\n", handle, chname);
+      dprintf(idx, _("Wiped info for %s on %s\n"), handle, chname);
   } else {
     set_user(&USERENTRY_INFO, u1, par[0] ? par : NULL);
     if (par[0] == '@')
-      dprintf(idx, "New default info (LOCKED) for %s: %s\n", handle, &par[1]);
+      dprintf(idx, _("New default info (LOCKED) for %s: %s\n"), handle,
+              &par[1]);
     else if (par[0])
-      dprintf(idx, "New default info for %s: %s\n", handle, par);
+      dprintf(idx, _("New default info for %s: %s\n"), handle, par);
     else
-      dprintf(idx, "Wiped default info for %s\n", handle);
+      dprintf(idx, _("Wiped default info for %s\n"), handle);
   }
 }
 
@@ -937,15 +945,15 @@
     strncpyz(s, stick_type, sizeof s);
   }
   if (!s[0]) {
-    dprintf(idx, "Usage: %sstick [ban/exempt/invite] <hostmask or number> "
-            "[channel]\n", yn ? "" : "un");
+    dprintf(idx, _("Usage: %s [ban/exempt/invite] <hostmask or number> "
+            "[channel]\n"), yn ? "stick" : "unstick");
     return;
   }
   /* Now deal with exemptions */
   if (!egg_strcasecmp(stick_type, "exempt")) {
     if (!use_exempts) {
-      dprintf(idx, "This command can only be used with use-exempts "
-              "enabled.\n");
+      dprintf(idx, _("This command can only be used with use-exempts "
+              "enabled.\n"));
       return;
     }
     if (!chname[0]) {
@@ -954,14 +962,15 @@
       if (i > 0) {
         putlog(LOG_CMDS, "*", "#%s# %sstick exempt %s",
                dcc[idx].nick, yn ? "" : "un", s);
-        dprintf(idx, "%stuck exempt: %s\n", yn ? "S" : "Uns", s);
+        dprintf(idx, yn ? _("stuck exempt: %s\n") : _("unstuck exempt: %s\n"),
+                s);
         return;
       }
       strncpyz(chname, dcc[idx].u.chat->con_chan, sizeof chname);
     }
     /* Channel-specific exempt? */
     if (!(chan = findchan_by_dname(chname))) {
-      dprintf(idx, "No such channel.\n");
+      dprintf(idx, _("No such channel.\n"));
       return;
     }
     if (str_isdigit(s)) {
@@ -974,16 +983,18 @@
     if (j > 0) {
       putlog(LOG_CMDS, "*", "#%s# %sstick exempt %s %s", dcc[idx].nick,
              yn ? "" : "un", s, chname);
-      dprintf(idx, "%stuck %s exempt: %s\n", yn ? "S" : "Uns", chname, s);
+      dprintf(idx, yn ? _("Stuck %s exempt: %s\n") :
+              _("Unstuck %s exempt: %s\n"), chname, s);
       return;
     }
-    dprintf(idx, "No such exempt.\n");
+    dprintf(idx, _("No such exempt.\n"));
     return;
   }
   /* Now the invites */
   else if (!egg_strcasecmp(stick_type, "invite")) {
     if (!use_invites) {
-      dprintf(idx, "This command can only be used with use-invites enabled.\n");
+      dprintf(idx, _("This command can only be used with use-invites "
+              "enabled.\n"));
       return;
     }
     if (!chname[0]) {
@@ -992,14 +1003,15 @@
       if (i > 0) {
         putlog(LOG_CMDS, "*", "#%s# %sstick invite %s",
                dcc[idx].nick, yn ? "" : "un", s);
-        dprintf(idx, "%stuck invite: %s\n", yn ? "S" : "Uns", s);
+        dprintf(idx, yn ? _("Stuck invite: %s\n") : _("Unstuck invite: %s\n"),
+                s);
         return;
       }
       strncpyz(chname, dcc[idx].u.chat->con_chan, sizeof chname);
     }
     /* Channel-specific invite? */
     if (!(chan = findchan_by_dname(chname))) {
-      dprintf(idx, "No such channel.\n");
+      dprintf(idx, _("No such channel.\n"));
       return;
     }
     if (str_isdigit(s)) {
@@ -1012,10 +1024,11 @@
     if (j > 0) {
       putlog(LOG_CMDS, "*", "#%s# %sstick invite %s %s", dcc[idx].nick,
              yn ? "" : "un", s, chname);
-      dprintf(idx, "%stuck %s invite: %s\n", yn ? "S" : "Uns", chname, s);
+      dprintf(idx, yn ? _("Stuck %s invite: %s\n") :
+              _("Unstuck %s invite: %s\n"), chname, s);
       return;
     }
-    dprintf(idx, "No such invite.\n");
+    dprintf(idx, _("No such invite.\n"));
     return;
   }
   if (!chname[0]) {
@@ -1024,7 +1037,7 @@
     if (i > 0) {
       putlog(LOG_CMDS, "*", "#%s# %sstick ban %s",
              dcc[idx].nick, yn ? "" : "un", s);
-      dprintf(idx, "%stuck ban: %s\n", yn ? "S" : "Uns", s);
+      dprintf(idx, yn ? _("Stuck ban: %s\n") : _("Unstuck ban: %s\n"), s);
       if ((me = module_find("irc", 0, 0)))
         for (achan = chanset; achan != NULL; achan = achan->next)
           (me->funcs[IRC_CHECK_THIS_BAN]) (achan, s, yn);
@@ -1034,7 +1047,7 @@
   }
   /* Channel-specific ban? */
   if (!(chan = findchan_by_dname(chname))) {
-    dprintf(idx, "No such channel.\n");
+    dprintf(idx, _("No such channel.\n"));
     return;
   }
   if (str_isdigit(s)) {
@@ -1047,12 +1060,13 @@
   if (j > 0) {
     putlog(LOG_CMDS, "*", "#%s# %sstick ban %s %s", dcc[idx].nick,
            yn ? "" : "un", s, chname);
-    dprintf(idx, "%stuck %s ban: %s\n", yn ? "S" : "Uns", chname, s);
+    dprintf(idx, yn ? _("Stuck %s ban: %s\n") : _("Unstuck %s ban: %s\n"),
+            chname, s);
     if ((me = module_find("irc", 0, 0)))
       (me->funcs[IRC_CHECK_THIS_BAN]) (chan, s, yn);
     return;
   }
-  dprintf(idx, "No such ban.\n");
+  dprintf(idx, _("No such ban.\n"));
 }
 
 
@@ -1074,13 +1088,13 @@
   struct chanuserrec *chanrec;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +chrec <user> [channel]\n");
+    dprintf(idx, _("Usage: +chrec <user> [channel]\n"));
     return;
   }
   nick = newsplit(&par);
   u1 = get_user_by_handle(userlist, nick);
   if (!u1) {
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
     return;
   }
   if (!par[0])
@@ -1090,7 +1104,7 @@
     chan = findchan_by_dname(chn);
   }
   if (!chan) {
-    dprintf(idx, "No such channel.\n");
+    dprintf(idx, _("No such channel.\n"));
     return;
   }
   get_user_flagrec(u, &user, chan->dname);
@@ -1098,18 +1112,18 @@
   if ((!glob_master(user) && !chan_master(user)) ||     /* drummer */
       (chan_owner(victim) && !chan_owner(user) && !glob_owner(user)) ||
       (glob_owner(victim) && !glob_owner(user))) {
-    dprintf(idx, "You have no permission to do that.\n");
+    dprintf(idx, _("You have no permission to do that.\n"));
     return;
   }
   chanrec = get_chanrec(u1, chan->dname);
   if (chanrec) {
-    dprintf(idx, "User %s already has a channel record for %s.\n",
+    dprintf(idx, _("User %s already has a channel record for %s.\n"),
             nick, chan->dname);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# +chrec %s %s", dcc[idx].nick, nick, chan->dname);
   add_chanrec(u1, chan->dname);
-  dprintf(idx, "Added %s channel record for %s.\n", chan->dname, nick);
+  dprintf(idx, _("Added %s channel record for %s.\n"), chan->dname, nick);
 }
 
 static void cmd_mns_chrec(struct userrec *u, int idx, char *par)
@@ -1119,13 +1133,13 @@
   struct chanuserrec *chanrec;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -chrec <user> [channel]\n");
+    dprintf(idx, _("Usage: -chrec <user> [channel]\n"));
     return;
   }
   nick = newsplit(&par);
   u1 = get_user_by_handle(userlist, nick);
   if (!u1) {
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
     return;
   }
   if (!par[0]) {
@@ -1135,7 +1149,7 @@
     if (chan)
       chn = chan->dname;
     else {
-      dprintf(idx, "Invalid console channel.\n");
+      dprintf(idx, _("Invalid console channel.\n"));
       return;
     }
   } else
@@ -1145,17 +1159,18 @@
   if ((!glob_master(user) && !chan_master(user)) ||     /* drummer */
       (chan_owner(victim) && !chan_owner(user) && !glob_owner(user)) ||
       (glob_owner(victim) && !glob_owner(user))) {
-    dprintf(idx, "You have no permission to do that.\n");
+    dprintf(idx, _("You have no permission to do that.\n"));
     return;
   }
   chanrec = get_chanrec(u1, chn);
   if (!chanrec) {
-    dprintf(idx, "User %s doesn't have a channel record for %s.\n", nick, chn);
+    dprintf(idx, _("User %s doesn't have a channel record for %s.\n"),
+            nick, chn);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# -chrec %s %s", dcc[idx].nick, nick, chn);
   del_chanrec(u1, chn);
-  dprintf(idx, "Removed %s channel record from %s.\n", chn, nick);
+  dprintf(idx, _("Removed %s channel record from %s.\n"), chn, nick);
 }
 
 static void cmd_pls_chan(struct userrec *u, int idx, char *par)
@@ -1166,35 +1181,35 @@
   struct chanset_t *chan;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: +chan [%s]<channel> [options]\n", CHANMETA);
+    dprintf(idx, _("Usage: +chan [%s]<channel> [options]\n"), CHANMETA);
     return;
   }
 
   chname = newsplit(&par);
   if (findchan_by_dname(chname)) {
-    dprintf(idx, "That channel already exists!\n");
+    dprintf(idx, _("That channel already exists!\n"));
     return;
   } else if ((chan = findchan(chname))) {
-    dprintf(idx, "That channel already exists as %s!\n", chan->dname);
+    dprintf(idx, _("That channel already exists as %s!\n"), chan->dname);
     return;
   } else if (strchr(CHANMETA, chname[0]) == NULL) {
-    dprintf(idx, "Invalid channel prefix.\n");
+    dprintf(idx, _("Invalid channel prefix.\n"));
     return;
   } else if (strchr(chname, ',') != NULL) {
-    dprintf(idx, "Invalid channel name.\n");
+    dprintf(idx, _("Invalid channel name.\n"));
     return;
   }
 
   if (Tcl_SplitList(NULL, par, &argc, &argv ) == TCL_ERROR) {
-    dprintf(idx, "Invalid channel options.\n");
+    dprintf(idx, _("Invalid channel options.\n"));
     return;
   }
   for (i = 0; i < argc; i++) {
     if ((!strncmp(argv[i], "need-", 5) || !strcmp(argv[i] + 1, "static"))
         && (!(u->flags & USER_OWNER) || (!isowner(dcc[idx].nick)
         && must_be_owner))) {
-      dprintf(idx, "Due to security concerns, only permanent owners can "
-                   "set the need-* and +/-static modes.\n");
+      dprintf(idx, _("Due to security concerns, only permanent owners can "
+                   "set the need-* and +/-static modes.\n"));
       Tcl_Free((char *) argv);
       return;
     }
@@ -1205,7 +1220,7 @@
   Tcl_Free((char *) argv);
 
   if (tcl_channel_add(0, chname, par) == TCL_ERROR)
-    dprintf(idx, "Invalid channel or channel options.\n");
+    dprintf(idx, _("Invalid channel or channel options.\n"));
   else
     putlog(LOG_CMDS, "*", "#%s# +chan %s", dcc[idx].nick, chname);
 }
@@ -1217,35 +1232,35 @@
   int i;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: -chan [%s]<channel>\n", CHANMETA);
+    dprintf(idx, _("Usage: -chan [%s]<channel>\n"), CHANMETA);
     return;
   }
   chname = newsplit(&par);
   chan = findchan_by_dname(chname);
   if (!chan) {
     if ((chan = findchan(chname)))
-      dprintf(idx, "That channel exists with a short name of %s, use that.\n",
+      dprintf(idx, _("That channel exists with a short name of %s, use that.\n"),
               chan->dname);
     else
-      dprintf(idx, "That channel doesn't exist!\n");
+      dprintf(idx, _("That channel doesn't exist!\n"));
     return;
   }
   if (channel_static(chan)) {
-    dprintf(idx, "Cannot remove %s, it is a static channel!\n", chname);
+    dprintf(idx, _("Cannot remove %s, it is a static channel!\n"), chname);
     return;
   }
 
   for (i = 0; i < dcc_total; i++)
     if ((dcc[i].type->flags & DCT_CHAT) &&
         !rfc_casecmp(dcc[i].u.chat->con_chan, chan->dname)) {
-      dprintf(i, "%s is no longer a valid channel, changing your console "
-              "to '*'\n", chname);
+      dprintf(i, _("%s is no longer a valid channel, changing your console "
+              "to '*'\n"), chname);
       strcpy(dcc[i].u.chat->con_chan, "*");
     }
   remove_channel(chan);
-  dprintf(idx, "Channel %s removed from the bot.\n", chname);
-  dprintf(idx, "This includes any channel specific bans, invites, exemptions "
-          "and user records that you set.\n");
+  dprintf(idx, _("Channel %s removed from the bot.\n"), chname);
+  dprintf(idx, _("This includes any channel specific bans, invites, "
+          "exemptions and user records that you set.\n"));
   putlog(LOG_CMDS, "*", "#%s# -chan %s", dcc[idx].nick, chname);
 }
 
@@ -1259,32 +1274,33 @@
   if (!par[0]) {
     chname = dcc[idx].u.chat->con_chan;
     if (chname[0] == '*') {
-      dprintf(idx, "Your console channel is invalid.\n");
+      dprintf(idx, _("Your console channel is invalid.\n"));
       return;
     }
   } else {
     chname = newsplit(&par);
     get_user_flagrec(u, &user, chname);
     if (!glob_master(user) && !chan_master(user)) {
-      dprintf(idx, "You don't have access to %s.\n", chname);
+      dprintf(idx, _("You don't have access to %s.\n"), chname);
       return;
     }
   }
   if (!(chan = findchan_by_dname(chname)))
-    dprintf(idx, "No such channel defined.\n");
+    dprintf(idx, _("No such channel defined.\n"));
   else {
-    dprintf(idx, "Settings for %s channel %s:\n",
-            channel_static(chan) ? "static" : "dynamic", chan->dname);
+    dprintf(idx, channel_static(chan) ? _("Settings for static channel %s:\n") :
+            _("Settings for dynamic channel %s:\n"), chan->dname);
     get_mode_protect(chan, work);
-    dprintf(idx, "Protect modes (chanmode): %s\n", work[0] ? work : "None");
+    dprintf(idx, work[0] ? _("Protect modes (chanmode): %s\n") :
+            _("No modes to protect (chanmode)\n"), work);
     if (chan->idle_kick)
-      dprintf(idx, "Idle Kick after (idle-kick): %d\n", chan->idle_kick);
+      dprintf(idx, _("Idle Kick after (idle-kick): %d\n"), chan->idle_kick);
     else
-      dprintf(idx, "Idle Kick after (idle-kick): DON'T!\n");
+      dprintf(idx, _("Idle Kick after (idle-kick): DON'T!\n"));
     if (chan->stopnethack_mode)
       dprintf(idx, "stopnethack-mode: %d\n", chan->stopnethack_mode);
     else
-      dprintf(idx, "stopnethack: DON'T!\n");
+      dprintf(idx, _("stopnethack: DON'T!\n"));
     dprintf(idx, "aop-delay: %d:%d\n", chan->aop_min, chan->aop_max);
     if (chan->revenge_mode)
       dprintf(idx, "revenge-mode: %d\n", chan->revenge_mode);
@@ -1306,18 +1322,20 @@
     /* Only bot owners can see/change these (they're TCL commands) */
     if (u->flags & USER_OWNER) {
       if (chan->need_op[0])
-        dprintf(idx, "To regain op's (need-op):\n%s\n", chan->need_op);
+        dprintf(idx, _("To regain op's (need-op):\n%s\n"), chan->need_op);
       if (chan->need_invite[0])
-        dprintf(idx, "To get invite (need-invite):\n%s\n", chan->need_invite);
+        dprintf(idx, _("To get invite (need-invite):\n%s\n"),
+                chan->need_invite);
       if (chan->need_key[0])
-        dprintf(idx, "To get key (need-key):\n%s\n", chan->need_key);
+        dprintf(idx, _("To get key (need-key):\n%s\n"), chan->need_key);
       if (chan->need_unban[0])
-        dprintf(idx, "If I'm banned (need-unban):\n%s\n", chan->need_unban);
+        dprintf(idx, _("If I'm banned (need-unban):\n%s\n"),
+                chan->need_unban);
       if (chan->need_limit[0])
-        dprintf(idx, "When channel full (need-limit):\n%s\n",
+        dprintf(idx, _("When channel full (need-limit):\n%s\n"),
                 chan->need_limit);
     }
-    dprintf(idx, "Other modes:\n");
+    dprintf(idx, _("Other modes:\n"));
     dprintf(idx,
             "     %cinactive       %cstatuslog      %csecret         "
             "%cshared\n", (chan->status & CHAN_INACTIVE) ? '+' : '-',
@@ -1366,7 +1384,7 @@
         int work_len;
 
         if (!tmp) {
-          dprintf(idx, "User defined channel flags:\n");
+          dprintf(idx, _("User defined channel flags:\n"));
           tmp = 1;
         }
         if (ii == 1)
@@ -1391,7 +1409,7 @@
         int work_len = strlen(work);
 
         if (!tmp) {
-          dprintf(idx, "User defined channel settings:\n");
+          dprintf(idx, _("User defined channel settings:\n"));
           tmp = 1;
         }
         egg_snprintf(work + work_len, sizeof(work) - work_len, "%s: %d   ",
@@ -1417,7 +1435,7 @@
             p = "{}";
 
           if (!tmp) {
-            dprintf(idx, "User defined channel strings:\n");
+            dprintf(idx, _("User defined channel strings:\n"));
             tmp = 1;
           }
           dprintf(idx, "%s: %s\n", ul->name, p);
@@ -1447,13 +1465,13 @@
   int all = 0;
 
   if (!par[0])
-    dprintf(idx, "Usage: chanset [%schannel] <settings>\n", CHANMETA);
+    dprintf(idx, _("Usage: chanset [%schannel] <settings>\n"), CHANMETA);
   else {
     if (strlen(par) > 2 && par[0] == '*' && par[1] == ' ') {
       all = 1;
       get_user_flagrec(u, &user, chanset ? chanset->dname : "");
       if (!glob_master(user)) {
-        dprintf(idx, "You need to be a global master to use .chanset *.\n");
+        dprintf(idx, _("You need to be a global master to use .chanset *.\n"));
         return;
       }
       newsplit(&par);
@@ -1462,10 +1480,10 @@
         chname = newsplit(&par);
         get_user_flagrec(u, &user, chname);
         if (!glob_master(user) && !chan_master(user)) {
-          dprintf(idx, "You don't have access to %s. \n", chname);
+          dprintf(idx, _("You don't have access to %s. \n"), chname);
           return;
         } else if (!(chan = findchan_by_dname(chname)) && (chname[0] != '+')) {
-          dprintf(idx, "That channel doesn't exist!\n");
+          dprintf(idx, _("That channel doesn't exist!\n"));
           return;
         }
         if (!chan) {
@@ -1475,12 +1493,12 @@
         }
       }
       if (!par[0] || par[0] == '*') {
-        dprintf(idx, "Usage: chanset [%schannel] <settings>\n", CHANMETA);
+        dprintf(idx, _("Usage: chanset [%schannel] <settings>\n"), CHANMETA);
         return;
       }
       if (!chan &&
           !(chan = findchan_by_dname(chname = dcc[idx].u.chat->con_chan))) {
-        dprintf(idx, "Invalid console channel.\n");
+        dprintf(idx, _("Invalid console channel.\n"));
         return;
       }
     }
@@ -1499,7 +1517,7 @@
             (!strcmp(list[0], "dont-idle-kick"))) {
             if (!strcmp(list[0] + 1, "static") && must_be_owner &&
                 !(isowner(dcc[idx].nick))) {
-              dprintf(idx, "Only permanent owners can modify the static flag.\n");
+              dprintf(idx, _("Only permanent owners can modify the static flag.\n"));
               nfree(buf);
               return;
             }
@@ -1507,8 +1525,9 @@
             strcat(answers, list[0]);
             strcat(answers, " ");
           } else if (!all || !chan->next)
-            dprintf(idx, "Error trying to set %s for %s, invalid mode.\n",
-                    list[0], all ? "all channels" : chname);
+            dprintf(idx, all ? _("Error trying to set %s for all channels, "
+                    "invalid mode.\n") : _("Error trying to set %s for %s, "
+                    "invalid mode.\n"), list[0], chname);
           list[0] = newsplit(&par);
           continue;
         }
@@ -1519,7 +1538,8 @@
         if (strncmp(list[0], "need-", 5) || (u->flags & USER_OWNER)) {
           if (!strncmp(list[0], "need-", 5) && !(isowner(dcc[idx].nick)) &&
               must_be_owner) {
-            dprintf(idx, "Due to security concerns, only permanent owners can set these modes.\n");
+            dprintf(idx, _("Due to security concerns, only permanent owners "
+                    "can set these modes.\n"));
             nfree(buf);
             return;
           }
@@ -1535,14 +1555,14 @@
             strcat(answers, parcpy);
             strcat(answers, " }");
           } else if (!all || !chan->next)
-            dprintf(idx, "Error trying to set %s for %s, invalid option\n",
+            dprintf(idx, _("Error trying to set %s for %s, invalid option\n"),
                     list[0], all ? "all channels" : chname);
           nfree(parcpy);
         }
         break;
       }
       if (!all && answers[0]) {
-        dprintf(idx, "Successfully set modes { %s } on %s.\n", answers,
+        dprintf(idx, _("Successfully set modes { %s } on %s.\n"), answers,
                 chname);
         putlog(LOG_CMDS, "*", "#%s# chanset %s %s", dcc[idx].nick, chname,
                answers);
@@ -1553,7 +1573,7 @@
         chan = chan->next;
     }
     if (all && answers[0]) {
-      dprintf(idx, "Successfully set modes { %s } on all channels.\n",
+      dprintf(idx, _("Successfully set modes { %s } on all channels.\n"),
               answers);
       putlog(LOG_CMDS, "*", "#%s# chanset * %s", dcc[idx].nick, answers);
     }
@@ -1564,9 +1584,9 @@
 static void cmd_chansave(struct userrec *u, int idx, char *par)
 {
   if (!chanfile[0])
-    dprintf(idx, "No channel saving file defined.\n");
+    dprintf(idx, _("No channel saving file defined.\n"));
   else {
-    dprintf(idx, "Saving all dynamic channel settings.\n");
+    dprintf(idx, _("Saving all dynamic channel settings.\n"));
     putlog(LOG_CMDS, "*", "#%s# chansave", dcc[idx].nick);
     write_channels();
   }
@@ -1575,9 +1595,9 @@
 static void cmd_chanload(struct userrec *u, int idx, char *par)
 {
   if (!chanfile[0])
-    dprintf(idx, "No channel saving file defined.\n");
+    dprintf(idx, _("No channel saving file defined.\n"));
   else {
-    dprintf(idx, "Reloading all dynamic channel settings.\n");
+    dprintf(idx, _("Reloading all dynamic channel settings.\n"));
     putlog(LOG_CMDS, "*", "#%s# chanload", dcc[idx].nick);
     read_channels(1, 1);
   }
Index: eggdrop1.8/src/mod/channels.mod/userchan.c
diff -u eggdrop1.8/src/mod/channels.mod/userchan.c:1.2 eggdrop1.8/src/mod/channels.mod/userchan.c:1.2.2.1
--- eggdrop1.8/src/mod/channels.mod/userchan.c:1.2	Thu Aug  5 12:12:05 2010
+++ eggdrop1.8/src/mod/channels.mod/userchan.c	Thu Nov 11 14:34:47 2010
@@ -1,7 +1,7 @@
 /*
  * userchan.c -- part of channels.mod
  *
- * $Id: userchan.c,v 1.2 2010/08/05 18:12:05 pseudo Exp $
+ * $Id: userchan.c,v 1.2.2.1 2010/11/11 20:34:47 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -427,7 +427,7 @@
     simple_sprintf(s, "%s!%s", me->funcs[SERVER_BOTNAME],
                    me->funcs[SERVER_BOTUSERHOST]);
     if (match_addr(host, s)) {
-      putlog(LOG_MISC, "*", IRC_IBANNEDME);
+      putlog(LOG_MISC, "*", _("Wanted to ban myself--deflected."));
       return 0;
     }
   }
@@ -648,36 +648,35 @@
 
   if (ban->added) {
     daysago(now, ban->added, s);
-    sprintf(dates, "%s %s", MODES_CREATED, s);
     if (ban->added < ban->lastactive) {
-      strcat(dates, ", ");
-      strcat(dates, MODES_LASTUSED);
-      strcat(dates, " ");
+      sprintf(dates, _("Created %s, last used "), s);
       daysago(now, ban->lastactive, s);
       strcat(dates, s);
     }
+    else
+      sprintf(dates, _("Created %s"), s);
   } else
     dates[0] = 0;
   if (ban->flags & MASKREC_PERM)
-    strcpy(s, "(perm)");
+    strcpy(s, _("(perm)"));
   else {
     char s1[41];
 
     days(ban->expire, now, s1);
-    sprintf(s, "(expires %s)", s1);
+    sprintf(s, _("(expires %s)"), s1);
   }
   if (ban->flags & MASKREC_STICKY)
-    strcat(s, " (sticky)");
+    strcat(s, _(" (sticky)"));
   if (!chan || ischanban(chan, ban->mask)) {
     if (number >= 0)
       dprintf(idx, "  [%3d] %s %s\n", number, ban->mask, s);
     else
-      dprintf(idx, "BAN: %s %s\n", ban->mask, s);
+      dprintf(idx, _("BAN: %s %s\n"), ban->mask, s);
   } else if (show_inact) {
     if (number >= 0)
       dprintf(idx, "! [%3d] %s %s\n", number, ban->mask, s);
     else
-      dprintf(idx, "BAN (%s): %s %s\n", MODES_INACTIVE, ban->mask, s);
+      dprintf(idx, _("BAN (inactive): %s %s\n"), ban->mask, s);
   } else
     return;
   dprintf(idx, "        %s: %s\n", ban->user, ban->desc);
@@ -694,36 +693,35 @@
 
   if (exempt->added) {
     daysago(now, exempt->added, s);
-    sprintf(dates, "%s %s", MODES_CREATED, s);
     if (exempt->added < exempt->lastactive) {
-      strcat(dates, ", ");
-      strcat(dates, MODES_LASTUSED);
-      strcat(dates, " ");
+      sprintf(dates, _("Created %s, last used "), s);
       daysago(now, exempt->lastactive, s);
       strcat(dates, s);
     }
+    else
+      sprintf(dates, _("Created %s"), s);
   } else
     dates[0] = 0;
   if (exempt->flags & MASKREC_PERM)
-    strcpy(s, "(perm)");
+    strcpy(s, _("(perm)"));
   else {
     char s1[41];
 
     days(exempt->expire, now, s1);
-    sprintf(s, "(expires %s)", s1);
+    sprintf(s, _("(expires %s)"), s1);
   }
   if (exempt->flags & MASKREC_STICKY)
-    strcat(s, " (sticky)");
+    strcat(s, _(" (sticky)"));
   if (!chan || ischanexempt(chan, exempt->mask)) {
     if (number >= 0)
       dprintf(idx, "  [%3d] %s %s\n", number, exempt->mask, s);
     else
-      dprintf(idx, "EXEMPT: %s %s\n", exempt->mask, s);
+      dprintf(idx, _("EXEMPT: %s %s\n"), exempt->mask, s);
   } else if (show_inact) {
     if (number >= 0)
       dprintf(idx, "! [%3d] %s %s\n", number, exempt->mask, s);
     else
-      dprintf(idx, "EXEMPT (%s): %s %s\n", MODES_INACTIVE, exempt->mask, s);
+      dprintf(idx, _("EXEMPT (inactive): %s %s\n"), exempt->mask, s);
   } else
     return;
   dprintf(idx, "        %s: %s\n", exempt->user, exempt->desc);
@@ -740,36 +738,35 @@
 
   if (invite->added) {
     daysago(now, invite->added, s);
-    sprintf(dates, "%s %s", MODES_CREATED, s);
     if (invite->added < invite->lastactive) {
-      strcat(dates, ", ");
-      strcat(dates, MODES_LASTUSED);
-      strcat(dates, " ");
+      sprintf(dates, _("Created %s, last used "), s);
       daysago(now, invite->lastactive, s);
       strcat(dates, s);
     }
+    else
+      sprintf(dates, _("Created %s"), s);
   } else
     dates[0] = 0;
   if (invite->flags & MASKREC_PERM)
-    strcpy(s, "(perm)");
+    strcpy(s, _("(perm)"));
   else {
     char s1[41];
 
     days(invite->expire, now, s1);
-    sprintf(s, "(expires %s)", s1);
+    sprintf(s, _("(expires %s)"), s1);
   }
   if (invite->flags & MASKREC_STICKY)
-    strcat(s, " (sticky)");
+    strcat(s, _(" (sticky)"));
   if (!chan || ischaninvite(chan, invite->mask)) {
     if (number >= 0)
       dprintf(idx, "  [%3d] %s %s\n", number, invite->mask, s);
     else
-      dprintf(idx, "INVITE: %s %s\n", invite->mask, s);
+      dprintf(idx, _("INVITE: %s %s\n"), invite->mask, s);
   } else if (show_inact) {
     if (number >= 0)
       dprintf(idx, "! [%3d] %s %s\n", number, invite->mask, s);
     else
-      dprintf(idx, "INVITE (%s): %s %s\n", MODES_INACTIVE, invite->mask, s);
+      dprintf(idx, _("INVITE (inactive): %s %s\n"), invite->mask, s);
   } else
     return;
   dprintf(idx, "        %s: %s\n", invite->user, invite->desc);
@@ -790,7 +787,7 @@
     if (chname[0] && (strchr(CHANMETA, chname[0]))) {
       chan = findchan_by_dname(chname);
       if (!chan) {
-        dprintf(idx, "%s.\n", CHAN_NOSUCH);
+        dprintf(idx, _("No such channel defined.\n"));
         return;
       }
     } else
@@ -803,10 +800,9 @@
     chan = NULL;
 
   if (chan && show_inact)
-    dprintf(idx, "%s:   (! = %s %s)\n", BANS_GLOBAL,
-            MODES_NOTACTIVE, chan->dname);
+    dprintf(idx, _("Global bans:   (! = not active on %s)\n"), chan->dname);
   else
-    dprintf(idx, "%s:\n", BANS_GLOBAL);
+    dprintf(idx, _("Global bans:\n"));
   for (u = global_bans; u; u = u->next) {
     if (match[0]) {
       if ((match_addr(match, u->mask)) ||
@@ -818,11 +814,11 @@
   }
   if (chan) {
     if (show_inact)
-      dprintf(idx, "%s %s:   (! = %s, * = %s)\n",
-              BANS_BYCHANNEL, chan->dname, MODES_NOTACTIVE2, MODES_NOTBYBOT);
+      dprintf(idx, _("Channel bans for %s:   (! = not active, "
+              "* = not placed by bot)\n"), chan->dname);
     else
-      dprintf(idx, "%s %s:  (* = %s)\n",
-              BANS_BYCHANNEL, chan->dname, MODES_NOTBYBOT);
+      dprintf(idx, "Channel bans for %s:  (* = not placed by bot)\n",
+              chan->dname);
     for (u = chan->bans; u; u = u->next) {
       if (match[0]) {
         if ((match_addr(match, u->mask)) ||
@@ -846,12 +842,12 @@
           if (s1[0])
             sprintf(fill, "%s (%s!%s)", b->mask, s1, s2);
           else
-            sprintf(fill, "%s (server %s)", b->mask, s2);
+            snprintf(fill, sizeof fill, _("%s (server %s)"), b->mask, s2);
           if (b->timer != 0) {
             min = (now - b->timer) / 60;
             sec = (now - b->timer) - (min * 60);
-            sprintf(s, " (active %02d:%02d)", min, sec);
-            strcat(fill, s);
+            sprintf(s, _(" (active %02d:%02d)"), min, sec);
+            strncat(fill, s, sizeof fill);
           }
           if ((!match[0]) || (match_addr(match, b->mask)))
             dprintf(idx, "* [%3d] %s\n", k, fill);
@@ -861,9 +857,9 @@
     }
   }
   if (k == 1)
-    dprintf(idx, "(There are no bans, permanent or otherwise.)\n");
+    dprintf(idx, _("(There are no bans, permanent or otherwise.)\n"));
   if ((!show_inact) && (!match[0]))
-    dprintf(idx, "%s.\n", BANS_USEBANSALL);
+    dprintf(idx, _("Use '.bans all' to see the total list.\n"));
 }
 
 static void tell_exempts(int idx, int show_inact, char *match)
@@ -879,7 +875,7 @@
     if (chname[0] && strchr(CHANMETA, chname[0])) {
       chan = findchan_by_dname(chname);
       if (!chan) {
-        dprintf(idx, "%s.\n", CHAN_NOSUCH);
+        dprintf(idx, _("No such channel defined.\n"));
         return;
       }
     } else
@@ -892,10 +888,9 @@
     chan = NULL;
 
   if (chan && show_inact)
-    dprintf(idx, "%s:   (! = %s %s)\n", EXEMPTS_GLOBAL,
-            MODES_NOTACTIVE, chan->dname);
+    dprintf(idx, _("Global exempts:   (! = not active on %s)\n"), chan->dname);
   else
-    dprintf(idx, "%s:\n", EXEMPTS_GLOBAL);
+    dprintf(idx, _("Global exempts:\n"));
   for (u = global_exempts; u; u = u->next) {
     if (match[0]) {
       if ((match_addr(match, u->mask)) ||
@@ -907,11 +902,11 @@
   }
   if (chan) {
     if (show_inact)
-      dprintf(idx, "%s %s:   (! = %s, * = %s)\n", EXEMPTS_BYCHANNEL,
-              chan->dname, MODES_NOTACTIVE2, MODES_NOTBYBOT);
+      dprintf(idx, _("Channel exempts for %s:   (! = not active, "
+              "* = not placed by bot)\n"), chan->dname);
     else
-      dprintf(idx, "%s %s:  (* = %s)\n",
-              EXEMPTS_BYCHANNEL, chan->dname, MODES_NOTBYBOT);
+      dprintf(idx, _("Channel exempts for %s:  (* = not placed by bot)\n"),
+              chan->dname);
     for (u = chan->exempts; u; u = u->next) {
       if (match[0]) {
         if ((match_addr(match, u->mask)) ||
@@ -935,11 +930,11 @@
           if (s1[0])
             sprintf(fill, "%s (%s!%s)", e->mask, s1, s2);
           else
-            sprintf(fill, "%s (server %s)", e->mask, s2);
+            sprintf(fill, _("%s (server %s)"), e->mask, s2);
           if (e->timer != 0) {
             min = (now - e->timer) / 60;
             sec = (now - e->timer) - (min * 60);
-            sprintf(s, " (active %02d:%02d)", min, sec);
+            sprintf(s, _(" (active %02d:%02d)"), min, sec);
             strcat(fill, s);
           }
           if ((!match[0]) || (match_addr(match, e->mask)))
@@ -950,9 +945,9 @@
     }
   }
   if (k == 1)
-    dprintf(idx, "(There are no ban exempts, permanent or otherwise.)\n");
+    dprintf(idx, _("(There are no ban exempts, permanent or otherwise.)\n"));
   if ((!show_inact) && (!match[0]))
-    dprintf(idx, "%s.\n", EXEMPTS_USEEXEMPTSALL);
+    dprintf(idx, _("Use '.exempts all' to see the total list.\n"));
 }
 
 static void tell_invites(int idx, int show_inact, char *match)
@@ -968,7 +963,7 @@
     if (chname[0] && strchr(CHANMETA, chname[0])) {
       chan = findchan_by_dname(chname);
       if (!chan) {
-        dprintf(idx, "%s.\n", CHAN_NOSUCH);
+        dprintf(idx, _("No such channel defined.\n"));
         return;
       }
     } else
@@ -981,10 +976,9 @@
     chan = NULL;
 
   if (chan && show_inact)
-    dprintf(idx, "%s:   (! = %s %s)\n", INVITES_GLOBAL,
-            MODES_NOTACTIVE, chan->dname);
+    dprintf(idx, _("Global invites:   (! = not active on %s)\n"), chan->dname);
   else
-    dprintf(idx, "%s:\n", INVITES_GLOBAL);
+    dprintf(idx, _("Global invites:\n"));
   for (u = global_invites; u; u = u->next) {
     if (match[0]) {
       if ((match_addr(match, u->mask)) ||
@@ -996,11 +990,11 @@
   }
   if (chan) {
     if (show_inact)
-      dprintf(idx, "%s %s:   (! = %s, * = %s)\n", INVITES_BYCHANNEL,
-              chan->dname, MODES_NOTACTIVE2, MODES_NOTBYBOT);
+      dprintf(idx, _("Channel invites for %s:   (! = not active, "
+              "* = not placed by bot)\n"), chan->dname);
     else
-      dprintf(idx, "%s %s:  (* = %s)\n",
-              INVITES_BYCHANNEL, chan->dname, MODES_NOTBYBOT);
+      dprintf(idx, _("Channel invites for %s:  (* = not placed by bot)\n"),
+              chan->dname);
     for (u = chan->invites; u; u = u->next) {
       if (match[0]) {
         if ((match_addr(match, u->mask)) ||
@@ -1024,11 +1018,11 @@
           if (s1[0])
             sprintf(fill, "%s (%s!%s)", i->mask, s1, s2);
           else
-            sprintf(fill, "%s (server %s)", i->mask, s2);
+            sprintf(fill, _("%s (server %s)"), i->mask, s2);
           if (i->timer != 0) {
             min = (now - i->timer) / 60;
             sec = (now - i->timer) - (min * 60);
-            sprintf(s, " (active %02d:%02d)", min, sec);
+            sprintf(s, _(" (active %02d:%02d)"), min, sec);
             strcat(fill, s);
           }
           if ((!match[0]) || (match_addr(match, i->mask)))
@@ -1039,9 +1033,9 @@
     }
   }
   if (k == 1)
-    dprintf(idx, "(There are no invites, permanent or otherwise.)\n");
+    dprintf(idx, _("(There are no invites, permanent or otherwise.)\n"));
   if ((!show_inact) && (!match[0]))
-    dprintf(idx, "%s.\n", INVITES_USEINVITESALL);
+    dprintf(idx, _("Use '.invites all' to see the total list.\n"));
 }
 
 /* Write the ban lists and the ignore list to a file.
@@ -1239,7 +1233,7 @@
     fclose(f);
   }
   if (ret < 3)
-    putlog(LOG_MISC, "*", USERF_ERRWRITE);
+    putlog(LOG_MISC, "*", _("ERROR writing user file."));
   write_channels();
 }
 
@@ -1309,7 +1303,7 @@
   for (u = global_bans; u; u = u2) {
     u2 = u->next;
     if (!(u->flags & MASKREC_PERM) && (now >= u->expire)) {
-      putlog(LOG_MISC, "*", "%s %s (%s)", BANS_NOLONGER, u->mask, MISC_EXPIRED);
+      putlog(LOG_MISC, "*", _("No longer banning %s (expired)"), u->mask);
       for (chan = chanset; chan; chan = chan->next)
         for (b = chan->channel.ban; b->mask[0]; b = b->next)
           if (!rfc_casecmp(b->mask, u->mask) &&
@@ -1325,8 +1319,8 @@
     for (u = chan->bans; u; u = u2) {
       u2 = u->next;
       if (!(u->flags & MASKREC_PERM) && (now >= u->expire)) {
-        putlog(LOG_MISC, "*", "%s %s %s %s (%s)", BANS_NOLONGER,
-               u->mask, MISC_ONLOCALE, chan->dname, MISC_EXPIRED);
+        putlog(LOG_MISC, "*", _("No longer banning %s on %s (expired)"),
+               u->mask, chan->dname);
         for (b = chan->channel.ban; b->mask[0]; b = b->next)
           if (!rfc_casecmp(b->mask, u->mask) &&
               expired_mask(chan, b->who) && b->timer != now) {
@@ -1353,8 +1347,7 @@
   for (u = global_exempts; u; u = u2) {
     u2 = u->next;
     if (!(u->flags & MASKREC_PERM) && (now >= u->expire)) {
-      putlog(LOG_MISC, "*", "%s %s (%s)", EXEMPTS_NOLONGER,
-             u->mask, MISC_EXPIRED);
+      putlog(LOG_MISC, "*", _("No longer ban exempting %s (expired)"), u->mask);
       for (chan = chanset; chan; chan = chan->next) {
         match = 0;
         b = chan->channel.ban;
@@ -1366,7 +1359,7 @@
         }
         if (match)
           putlog(LOG_MISC, chan->dname,
-                 "Exempt not expired on channel %s. Ban still set!",
+                 _("Exempt not expired on channel %s. Ban still set!"),
                  chan->dname);
         else
           for (e = chan->channel.exempt; e->mask[0]; e = e->next)
@@ -1394,11 +1387,11 @@
         }
         if (match)
           putlog(LOG_MISC, chan->dname,
-                 "Exempt not expired on channel %s. Ban still set!",
+                 _("Exempt not expired on channel %s. Ban still set!"),
                  chan->dname);
         else {
-          putlog(LOG_MISC, "*", "%s %s %s %s (%s)", EXEMPTS_NOLONGER,
-                 u->mask, MISC_ONLOCALE, chan->dname, MISC_EXPIRED);
+          putlog(LOG_MISC, "*", "No longer ban exempting %s on %s (expired)",
+                 u->mask, chan->dname);
           for (e = chan->channel.exempt; e->mask[0]; e = e->next)
             if (!rfc_casecmp(e->mask, u->mask) &&
                 expired_mask(chan, e->who) && e->timer != now) {
@@ -1425,8 +1418,7 @@
   for (u = global_invites; u; u = u2) {
     u2 = u->next;
     if (!(u->flags & MASKREC_PERM) && (now >= u->expire)) {
-      putlog(LOG_MISC, "*", "%s %s (%s)", INVITES_NOLONGER,
-             u->mask, MISC_EXPIRED);
+      putlog(LOG_MISC, "*", _("No longer inviting %s (expired)"), u->mask);
       for (chan = chanset; chan; chan = chan->next)
         if (!(chan->channel.mode & CHANINV))
           for (b = chan->channel.invite; b->mask[0]; b = b->next)
@@ -1443,8 +1435,8 @@
     for (u = chan->invites; u; u = u2) {
       u2 = u->next;
       if (!(u->flags & MASKREC_PERM) && (now >= u->expire)) {
-        putlog(LOG_MISC, "*", "%s %s %s %s (%s)", INVITES_NOLONGER,
-               u->mask, MISC_ONLOCALE, chan->dname, MISC_EXPIRED);
+        putlog(LOG_MISC, "*", _("No longer inviting %s on %s (expired)"),
+               u->mask, chan->dname);
         if (!(chan->channel.mode & CHANINV))
           for (b = chan->channel.invite; b->mask[0]; b = b->next)
             if (!rfc_casecmp(b->mask, u->mask) &&
Index: eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang
diff -u eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang:1.1.1.1 eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang:1.1.1.1.2.1
--- eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang	Thu Nov 11 14:34:47 2010
@@ -1,7 +1,7 @@
 # transfer.english.lang
 #   language messages for transfer module
 #
-# $Id: transfer.english.lang,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+# $Id: transfer.english.lang,v 1.1.1.1.2.1 2010/11/11 20:34:47 pseudo Exp $
 
 0xf00,Refused dcc get %s: copy to %s FAILED!
 0xf01,NOTICE %s :File system is broken; aborting queued files.\n
@@ -34,6 +34,7 @@
 0xf1c,NOTICE %s :Thanks for the file!\n
 0xf1d,Lost userfile transfer from %s; aborting.
 # 0xf1e, < this one is now empty
+0xf1e,
 0xf1f,Disconnected %s (aborted userfile transfer)
 0xf20,Lost dcc send %s from %s!%s (%lu/%lu)
 0xf21,(!) reget packet from %s for %s is invalid!
Index: eggdrop1.8/src/mod/transfer.mod/transfer.c
diff -u eggdrop1.8/src/mod/transfer.mod/transfer.c:1.4 eggdrop1.8/src/mod/transfer.mod/transfer.c:1.4.2.1
--- eggdrop1.8/src/mod/transfer.mod/transfer.c:1.4	Wed Oct  6 13:07:47 2010
+++ eggdrop1.8/src/mod/transfer.mod/transfer.c	Thu Nov 11 14:34:47 2010
@@ -1,7 +1,7 @@
 /*
  * transfer.c -- part of transfer.mod
  *
- * $Id: transfer.c,v 1.4 2010/10/06 19:07:47 pseudo Exp $
+ * $Id: transfer.c,v 1.4.2.1 2010/11/11 20:34:47 pseudo Exp $
  *
  * Copyright (C) 1997 Robey Pointer
  * Copyright (C) 1999 - 2010 Eggheads Development Team
@@ -317,7 +317,7 @@
       lostdcc(idx);
       return;
     }
-    putlog(LOG_FILES, "*", TRANSFER_COMPLETED_DCC, dcc[idx].u.xfer->origname,
+    putlog(LOG_FILES, "*", _("Completed dcc send %s from %s!%s"), dcc[idx].u.xfer->origname,
            dcc[idx].nick, dcc[idx].host);
     egg_snprintf(s, sizeof s, "%s!%s", dcc[idx].nick, dcc[idx].host);
     u = get_user_by_host(s);
@@ -325,10 +325,10 @@
 
     l = strlen(dcc[idx].u.xfer->filename);
     if (l > NAME_MAX) {         /* Filename is too long. */
-      putlog(LOG_FILES, "*", TRANSFER_FILENAME_TOOLONG, l);
-      dprintf(DP_HELP, TRANSFER_NOTICE_FNTOOLONG, dcc[idx].nick, l);
-      putlog(LOG_FILES, "*", TRANSFER_TOO_BAD);
-      dprintf(DP_HELP, TRANSFER_NOTICE_TOOBAD, dcc[idx].nick);
+      putlog(LOG_FILES, "*", _("Filename too long: %d (max %d allowed)."), l,
+             NAME_MAX);
+      dprintf(DP_HELP, _("NOTICE %s :Filename too long: %d (max %d allowed)\n"),
+              dcc[idx].nick, l, NAME_MAX);
       killsock(dcc[idx].sock);
       lostdcc(idx);
       return;
@@ -340,7 +340,8 @@
     sprintf(ofn, "%s%s", tempdir, dcc[idx].u.xfer->filename);
     sprintf(nfn, "%s%s", dcc[idx].u.xfer->dir, dcc[idx].u.xfer->origname);
     if (movefile(ofn, nfn))
-      putlog(LOG_MISC | LOG_FILES, "*", TRANSFER_FAILED_MOVE, nfn, ofn);
+      putlog(LOG_MISC | LOG_FILES, "*", _("FAILED move `%s' from `%s'! "
+             "File lost!"), nfn, ofn);
     else {
       /* Add to file database */
       module_entry *fs = module_find("filesys", 0, 0);
@@ -359,10 +360,10 @@
       if (!ok && (dcc[j].type->flags & (DCT_GETNOTES | DCT_FILES)) &&
           !egg_strcasecmp(dcc[j].nick, hand)) {
         ok = 1;
-        dprintf(j, TRANSFER_THANKS);
+        dprintf(j, _("Thanks for the file!\n"));
       }
     if (!ok)
-      dprintf(DP_HELP, TRANSFER_NOTICE_THANKS, dcc[idx].nick);
+      dprintf(DP_HELP, _("NOTICE %s :Thanks for the file!\n"), dcc[idx].nick);
     killsock(dcc[idx].sock);
     lostdcc(idx);
     return;
@@ -376,11 +377,13 @@
           (dcc[x].type->flags & DCT_BOT))
         y = x;
     if (y) {
-      putlog(LOG_BOTS, "*", TRANSFER_USERFILE_LOST, dcc[y].nick);
+      putlog(LOG_BOTS, "*", _("Lost userfile transfer from %s; aborting."),
+             dcc[y].nick);
       unlink(dcc[idx].u.xfer->filename);
       /* Drop that bot */
       dprintf(y, "bye\n");
-      egg_snprintf(s, sizeof s, TRANSFER_USERFILE_DISCON, dcc[y].nick);
+      egg_snprintf(s, sizeof s, _("Disconnected %s (aborted userfile "
+                   "transfer)"), dcc[y].nick);
       botnet_send_unlinked(y, dcc[y].nick, s);
       chatout("*** %s\n", dcc[y].nick, s);
       if (y != idx) {
@@ -391,9 +394,9 @@
       lostdcc(idx);
     }
   } else {
-    putlog(LOG_FILES, "*", TRANSFER_LOST_DCCSEND, dcc[idx].u.xfer->origname,
-           dcc[idx].nick, dcc[idx].host, dcc[idx].status,
-           dcc[idx].u.xfer->length);
+    putlog(LOG_FILES, "*", _("Lost dcc send %s from %s!%s (%lu/%lu)"),
+           dcc[idx].u.xfer->origname, dcc[idx].nick, dcc[idx].host,
+           dcc[idx].status, dcc[idx].u.xfer->length);
     ofn = nmalloc(strlen(tempdir) + strlen(dcc[idx].u.xfer->filename) + 1);
     sprintf(ofn, "%s%s", tempdir, dcc[idx].u.xfer->filename);
     unlink(ofn);
@@ -432,8 +435,8 @@
                               ((reget_data->byte_offset & 0x000000ff) << 24);
   }
   if (reget_data->packet_id != TRANSFER_REGET_PACKETID)
-    putlog(LOG_FILES, "*", TRANSFER_REGET_PACKET, dcc[idx].nick,
-           dcc[idx].u.xfer->origname);
+    putlog(LOG_FILES, "*", _("(!) reget packet from %s for %s is invalid!"),
+           dcc[idx].nick, dcc[idx].u.xfer->origname);
   else
     dcc[idx].u.xfer->offset = reget_data->byte_offset;
   dcc[idx].u.xfer->type = XFER_RESEND;
@@ -501,17 +504,18 @@
   dcc[idx].u.xfer->sofar = 0;
   if (cmp > dcc[idx].u.xfer->length && cmp > dcc[idx].status) {
     /* Attempt to resume, but file is not as long as requested... */
-    putlog(LOG_FILES, "*", TRANSFER_BEHIND_FILEEND, dcc[idx].u.xfer->origname,
+    putlog(LOG_FILES, "*", _("!! Resuming file transfer behind file end for "
+          "%s to %s"), dcc[idx].u.xfer->origname,
            dcc[idx].nick);
   } else if (cmp > dcc[idx].status) {
     /* Attempt to resume */
     if (!strcmp(dcc[idx].nick, "*users"))
-      putlog(LOG_BOTS, "*", TRANSFER_TRY_SKIP_AHEAD);
+      putlog(LOG_BOTS, "*", _("!!! Trying to skip ahead on userfile transfer"));
     else {
       fseek(dcc[idx].u.xfer->f, cmp, SEEK_SET);
       dcc[idx].status = cmp;
-      putlog(LOG_FILES, "*", TRANSFER_RESUME_FILE, (int) (cmp / 1024),
-             dcc[idx].u.xfer->origname, dcc[idx].nick);
+      putlog(LOG_FILES, "*", _("Resuming file transfer at %dk for %s to %s"),
+             (int) (cmp / 1024), dcc[idx].u.xfer->origname, dcc[idx].nick);
     }
   } else {
     if (dcc[idx].u.xfer->ack_type == XFER_ACK_UNKNOWN) {
@@ -544,7 +548,7 @@
           y = x;
       if (y != 0)
         dcc[y].status &= ~STAT_SENDING;
-      putlog(LOG_BOTS, "*", TRANSFER_COMPLETED_USERFILE, dcc[y].nick);
+      putlog(LOG_BOTS, "*", _("Completed userfile transfer to %s."), dcc[y].nick);
       unlink(dcc[idx].u.xfer->filename);
       /* Any sharebot things that were queued: */
       if (me && me->funcs[SHARE_DUMP_RESYNC])
@@ -564,7 +568,7 @@
        * (not the user who actually received it)
        */
       stats_add_dnload(u, dcc[idx].u.xfer->length);
-      putlog(LOG_FILES, "*", TRANSFER_FINISHED_DCCSEND,
+      putlog(LOG_FILES, "*", _("Finished dcc send %s to %s"),
              dcc[idx].u.xfer->origname, dcc[idx].nick);
       wipe_tmp_filename(dcc[idx].u.xfer->filename, idx);
       strcpy((char *) xnick, dcc[idx].nick);
@@ -598,12 +602,13 @@
       if (!egg_strcasecmp(dcc[x].nick, dcc[idx].host) &&
           (dcc[x].type->flags & DCT_BOT))
         y = x;
-    putlog(LOG_BOTS, "*", TRANSFER_ABORT_USERFILE);
+    putlog(LOG_BOTS, "*", _("Lost userfile transfer; aborting."));
     /* Note: no need to unlink the xfer file, as it's already unlinked. */
     xnick[0] = 0;
     /* Drop that bot */
     dprintf(-dcc[y].sock, "bye\n");
-    egg_snprintf(s, sizeof s, TRANSFER_USERFILE_DISCON, dcc[y].nick);
+    egg_snprintf(s, sizeof s, _("Disconnected %s (aborted userfile transfer)"),
+                 dcc[y].nick);
     botnet_send_unlinked(y, dcc[y].nick, s);
     chatout("*** %s\n", s);
     if (y != idx) {
@@ -623,7 +628,7 @@
     check_tcl_toutlost(u, dcc[idx].nick, dcc[idx].u.xfer->dir,
                        dcc[idx].u.xfer->acked, dcc[idx].u.xfer->length, H_lost);
 
-    putlog(LOG_FILES, "*", TRANSFER_LOST_DCCGET,
+    putlog(LOG_FILES, "*", _("Lost dcc get %s from %s!%s"),
            dcc[idx].u.xfer->origname, dcc[idx].nick, dcc[idx].host);
     wipe_tmp_filename(dcc[idx].u.xfer->filename, idx);
     strcpy(xnick, dcc[idx].nick);
@@ -651,9 +656,9 @@
   tputs(dcc[idx].sock, s, 4);
   dcc[idx].timeval = now;
   if (dcc[idx].status > dcc[idx].u.xfer->length && dcc[idx].u.xfer->length > 0) {
-    dprintf(DP_HELP, TRANSFER_BOGUS_FILE_LENGTH, dcc[idx].nick);
-    putlog(LOG_FILES, "*", TRANSFER_FILE_TOO_LONG, dcc[idx].u.xfer->origname,
-           dcc[idx].nick, dcc[idx].host);
+    dprintf(DP_HELP, _("NOTICE %s :Bogus file length.\n"), dcc[idx].nick);
+    putlog(LOG_FILES, "*", _("File too long: dropping dcc send %s from %s!%s"),
+           dcc[idx].u.xfer->origname, dcc[idx].nick, dcc[idx].host);
     fclose(dcc[idx].u.xfer->f);
     b = nmalloc(strlen(tempdir) + strlen(dcc[idx].u.xfer->filename) + 1);
     sprintf(b, "%s%s", tempdir, dcc[idx].u.xfer->filename);
@@ -681,9 +686,10 @@
       dcc[y].status &= ~STAT_SHARE;
     }
     unlink(dcc[i].u.xfer->filename);
-    putlog(LOG_BOTS, "*", TRANSFER_USERFILE_TIMEOUT);
+    putlog(LOG_BOTS, "*", _("Timeout on userfile transfer."));
     dprintf(y, "bye\n");
-    egg_snprintf(xx, sizeof xx, TRANSFER_DICONNECT_TIMEOUT, dcc[y].nick);
+    egg_snprintf(xx, sizeof xx, _("Disconnected %s (timed-out userfile "
+                 "transfer)"), dcc[y].nick);
     botnet_send_unlinked(y, dcc[y].nick, xx);
     chatout("*** %s\n", xx);
     if (y < i) {
@@ -700,8 +706,8 @@
     struct userrec *u;
 
     p = strrchr(dcc[i].u.xfer->origname, '/');
-    dprintf(DP_HELP, TRANSFER_NOTICE_TIMEOUT, dcc[i].nick,
-            p ? p + 1 : dcc[i].u.xfer->origname);
+    dprintf(DP_HELP, _("NOTICE %s :Timeout during transfer, aborting %s.\n"),
+            dcc[i].nick, p ? p + 1 : dcc[i].u.xfer->origname);
 
     /* Call DCC `timeout' trigger now.
      */
@@ -710,7 +716,7 @@
     check_tcl_toutlost(u, dcc[i].nick, dcc[i].u.xfer->dir,
                        dcc[i].u.xfer->acked, dcc[i].u.xfer->length, H_tout);
 
-    putlog(LOG_FILES, "*", TRANSFER_DCC_GET_TIMEOUT,
+    putlog(LOG_FILES, "*", _("DCC timeout: GET %s (%s) at %lu/%lu"),
            p ? p + 1 : dcc[i].u.xfer->origname, dcc[i].nick, dcc[i].status,
            dcc[i].u.xfer->length);
     wipe_tmp_filename(dcc[i].u.xfer->filename, i);
@@ -742,7 +748,7 @@
 
     unlink(dcc[idx].u.xfer->filename);
 
-    putlog(LOG_BOTS, "*", TRANSFER_USERFILE_TIMEOUT);
+    putlog(LOG_BOTS, "*", _("Timeout on userfile transfer."));
   } else {
     char *buf;
 
@@ -751,10 +757,11 @@
     unlink(buf);
     nfree(buf);
 
-    dprintf(DP_HELP, TRANSFER_NOTICE_TIMEOUT, dcc[idx].nick,
-            dcc[idx].u.xfer->origname);
-    putlog(LOG_FILES, "*", TRANSFER_DCC_SEND_TIMEOUT, dcc[idx].u.xfer->origname,
-           dcc[idx].nick, dcc[idx].status, dcc[idx].u.xfer->length);
+    dprintf(DP_HELP, _("NOTICE %s :Timeout during transfer, aborting %s.\n"),
+            dcc[idx].nick, dcc[idx].u.xfer->origname);
+    putlog(LOG_FILES, "*", _("DCC timeout: SEND %s (%s) at %lu/%lu"),
+           dcc[idx].u.xfer->origname, dcc[idx].nick, dcc[idx].status,
+           dcc[idx].u.xfer->length);
   }
 
   killsock(dcc[idx].sock);
@@ -764,28 +771,29 @@
 static void display_dcc_get(int idx, char *buf)
 {
   if (dcc[idx].status == dcc[idx].u.xfer->length)
-    sprintf(buf, TRANSFER_SEND, dcc[idx].u.xfer->acked,
-            dcc[idx].u.xfer->length, dcc[idx].u.xfer->origname);
+    sprintf(buf, _("send  (%lu)/%lu\n    Filename: %s\n"),
+            dcc[idx].u.xfer->acked, dcc[idx].u.xfer->length,
+            dcc[idx].u.xfer->origname);
   else
-    sprintf(buf, TRANSFER_SEND, dcc[idx].status,
+    sprintf(buf, _("send  (%lu)/%lu\n    Filename: %s\n"), dcc[idx].status,
             dcc[idx].u.xfer->length, dcc[idx].u.xfer->origname);
 }
 
 static void display_dcc_get_p(int idx, char *buf)
 {
-  sprintf(buf, TRANSFER_SEND_WAITED, now - dcc[idx].timeval,
-          dcc[idx].u.xfer->origname);
+  sprintf(buf, _("send  waited %lus\n    Filename: %s\n"),
+          now - dcc[idx].timeval, dcc[idx].u.xfer->origname);
 }
 
 static void display_dcc_send(int idx, char *buf)
 {
-  sprintf(buf, TRANSFER_SEND, dcc[idx].status,
+  sprintf(buf, _("send  (%lu)/%lu\n    Filename: %s\n"), dcc[idx].status,
           dcc[idx].u.xfer->length, dcc[idx].u.xfer->origname);
 }
 
 static void display_dcc_fork_send(int idx, char *buf)
 {
-  sprintf(buf, TRANSFER_CONN_SEND);
+  sprintf(buf, _("conn  send"));
 }
 
 static int expmem_dcc_xfer(void *x)
@@ -899,7 +907,7 @@
 
   if (strcmp(dcc[idx].nick, "*users")) {
     egg_snprintf(s1, sizeof s1, "%s!%s", dcc[idx].nick, dcc[idx].host);
-    putlog(LOG_MISC, "*", TRANSFER_DCC_CONN, dcc[idx].u.xfer->origname, s1);
+    putlog(LOG_MISC, "*", _("DCC connection: SEND %s (%s)"), dcc[idx].u.xfer->origname, s1);
   }
 }
 
@@ -914,8 +922,8 @@
   dcc[idx].addr = 0;
   dcc[idx].port = (int) port;
   if (dcc[idx].sock == -1) {
-    dprintf(DP_HELP, TRANSFER_NOTICE_BAD_CONN, dcc[idx].nick, strerror(errno));
-    putlog(LOG_FILES, "*", TRANSFER_LOG_BAD_CONN, dcc[idx].u.xfer->origname,
+    dprintf(DP_HELP, _("NOTICE %s :Bad connection (%s)\n"), dcc[idx].nick, strerror(errno));
+    putlog(LOG_FILES, "*", _("DCC bad connection: GET %s (%s!%s)"), dcc[idx].u.xfer->origname,
            dcc[idx].nick, dcc[idx].host);
     fclose(dcc[idx].u.xfer->f);
     lostdcc(idx);
@@ -1049,7 +1057,7 @@
     if (getdccaddr(&dcc[i].sockname, s, sizeof s)) {
       dprintf(DP_SERVER, "PRIVMSG %s :\001DCC %sSEND %s %s %d %lu\001\n", nick,
               resend ? "RE" : "", nfn, s, port, dccfilesize);
-      putlog(LOG_FILES, "*", TRANSFER_BEGIN_DCC, resend ? TRANSFER_RE : "", nfn,
+      putlog(LOG_FILES, "*", _("Begin DCC %ssend %s to %s"), resend ? _("re") : "", nfn,
              nick);
     }
   }
@@ -1101,7 +1109,7 @@
   if (dcc[i].u.xfer->length <= offset) {
     char *p = strrchr(dcc[i].u.xfer->origname, '/');
 
-    dprintf(DP_HELP, TRANSFER_DCC_IGNORED, nick,
+    dprintf(DP_HELP, _("NOTICE %s :Ignoring resume of `%s': no data requested.\n"), nick,
             p ? p + 1 : dcc[i].u.xfer->origname);
     killsock(dcc[i].sock);
     killtransfer(i);
@@ -1148,7 +1156,7 @@
   int i;
   p_tcl_bind_list H_ctcp;
 
-  putlog(LOG_MISC, "*", TRANSFER_UNLOADING);
+  putlog(LOG_MISC, "*", _("Unloading transfer module  killing all transfer connections..."));
   for (i = dcc_total - 1; i >= 0; i--) {
     if (dcc[i].type == &DCC_GET || dcc[i].type == &DCC_GET_PENDING)
       eof_dcc_get(i);
@@ -1234,7 +1242,7 @@
   module_register(MODULE_NAME, transfer_table, 2, 4);
   if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) {
     module_undepend(MODULE_NAME);
-    return "This module requires Eggdrop 1.8.0 or later.";
+    return _("This module requires Eggdrop 1.8.0 or later.");
   }
 
   add_tcl_commands(mytcls);
Index: eggdrop1.8/src/mod/transfer.mod/transfer.h
diff -u eggdrop1.8/src/mod/transfer.mod/transfer.h:1.1.1.1 eggdrop1.8/src/mod/transfer.mod/transfer.h:1.1.1.1.2.1
--- eggdrop1.8/src/mod/transfer.mod/transfer.h:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/transfer.mod/transfer.h	Thu Nov 11 14:34:47 2010
@@ -1,7 +1,7 @@
 /*
  * transfer.h -- part of transfer.mod
  *
- * $Id: transfer.h,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: transfer.h,v 1.1.1.1.2.1 2010/11/11 20:34:47 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -86,7 +86,6 @@
 #define TRANSFER_USERFILE_TIMEOUT   get_language(0xf2b)
 #define TRANSFER_DICONNECT_TIMEOUT  get_language(0xf2c)
 #define TRANSFER_NOTICE_TIMEOUT     get_language(0xf2d)
-#define TRANSFER_LOG_TIMEOUT        get_language(0xf2e)
 #define TRANSFER_DCC_GET_TIMEOUT    get_language(0xf2f)
 #define TRANSFER_DCC_SEND_TIMEOUT   get_language(0xf30)
 #define TRANSFER_SEND               get_language(0xf31)
Index: eggdrop1.8/src/mod/transfer.mod/transferqueue.c
diff -u eggdrop1.8/src/mod/transfer.mod/transferqueue.c:1.1.1.1 eggdrop1.8/src/mod/transfer.mod/transferqueue.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/transfer.mod/transferqueue.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/transfer.mod/transferqueue.c	Thu Nov 11 14:34:47 2010
@@ -1,7 +1,7 @@
 /*
  * transferqueue.c -- part of transfer.mod
  *
- * $Id: transferqueue.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: transferqueue.c,v 1.1.1.1.2.1 2010/11/11 20:34:47 pseudo Exp $
  *
  * Copyright (C) 2003 - 2010 Eggheads Development Team
  *
@@ -121,9 +121,10 @@
     s1 = nmalloc(strlen(tempdir) + strlen(this->file) + 1);
     sprintf(s1, "%s%s", tempdir, this->file);
     if (copyfile(s, s1) != 0) {
-      putlog(LOG_FILES | LOG_MISC, "*", TRANSFER_COPY_FAILED, this->file,
-             tempdir);
-      dprintf(DP_HELP, TRANSFER_FILESYS_BROKEN, this->to);
+      putlog(LOG_FILES | LOG_MISC, "*", _("Refused dcc get %s: copy to %s "
+             "FAILED!"), this->file, tempdir);
+      dprintf(DP_HELP, _("NOTICE %s :File system is broken; "
+              "aborting queued files.\n"), this->to);
       strcpy(s, this->to);
       flush_fileq(s);
       nfree(s1);
@@ -144,7 +145,8 @@
   x = raw_dcc_send(s1, this->to, this->nick, s);
   if (x == DCCSEND_OK) {
     if (egg_strcasecmp(this->to, this->nick))
-      dprintf(DP_HELP, TRANSFER_FILE_ARRIVE, this->to, this->nick);
+      dprintf(DP_HELP, _("NOTICE %s :Here is a file from %s ...\n"), this->to,
+              this->nick);
     deq_this(this);
     nfree(s);
     nfree(s1);
@@ -152,19 +154,24 @@
   }
   wipe_tmp_filename(s1, -1);
   if (x == DCCSEND_FULL) {
-    putlog(LOG_FILES, "*", TRANSFER_LOG_CONFULL, s1, this->nick);
-    dprintf(DP_HELP, TRANSFER_NOTICE_CONFULL, this->to);
+    putlog(LOG_FILES, "*", _("DCC connections full: GET %s [%s]"), s1,
+           this->nick);
+    dprintf(DP_HELP, _("NOTICE %s :DCC connections full; "
+            "aborting queued files.\n"), this->to);
     strcpy(s, this->to);
     flush_fileq(s);
   } else if (x == DCCSEND_NOSOCK) {
-    putlog(LOG_FILES, "*", TRANSFER_LOG_SOCKERR, s1, this->nick);
-    dprintf(DP_HELP, TRANSFER_NOTICE_SOCKERR, this->to);
+    putlog(LOG_FILES, "*", _("DCC socket error: GET %s [%s]"), s1, this->nick);
+    dprintf(DP_HELP, _("NOTICE %s :DCC socket error; aborting queued files.\n"),
+            this->to);
     strcpy(s, this->to);
     flush_fileq(s);
   } else {
     if (x == DCCSEND_FEMPTY) {
-      putlog(LOG_FILES, "*", TRANSFER_LOG_FILEEMPTY, this->file);
-      dprintf(DP_HELP, TRANSFER_NOTICE_FILEEMPTY, this->to, this->file);
+      putlog(LOG_FILES, "*", _("Aborted dcc get %s: File is empty!"),
+             this->file);
+      dprintf(DP_HELP, _("NOTICE %s :File %s is empty  aborting transfer.\n"),
+              this->to, this->file);
     }
     deq_this(this);
   }
@@ -184,8 +191,8 @@
     if (!egg_strcasecmp(q->nick, dcc[idx].nick)) {
       if (!cnt) {
         spaces[HANDLEN - 9] = 0;
-        dprintf(idx, TRANSFER_SEND_TO, spaces);
-        dprintf(idx, TRANSFER_LINES, spaces);
+        dprintf(idx, _("  Send to  %s  Filename\n"), spaces);
+        dprintf(idx, _("  ---------%s  --------------------\n"), spaces);
         spaces[HANDLEN - 9] = ' ';
       }
       cnt++;
@@ -206,8 +213,8 @@
 
       if (!cnt) {
         spaces[HANDLEN - 9] = 0;
-        dprintf(idx, TRANSFER_SEND_TO, spaces);
-        dprintf(idx, TRANSFER_LINES, spaces);
+        dprintf(idx, _("  Send to  %s  Filename\n"), spaces);
+        dprintf(idx, _("  ---------%s  --------------------\n"), spaces);
         spaces[HANDLEN - 9] = ' ';
       }
       nfn = strrchr(dcc[i].u.xfer->origname, '/');
@@ -218,17 +225,18 @@
       cnt++;
       spaces[len = HANDLEN - strlen(dcc[i].nick)] = 0;
       if (dcc[i].type == &DCC_GET_PENDING)
-        dprintf(idx, TRANSFER_WAITING, dcc[i].nick, spaces, nfn);
+        dprintf(idx, _("  %s%s  %s  [WAITING]\n"), dcc[i].nick, spaces, nfn);
       else
-        dprintf(idx, TRANSFER_DONE, dcc[i].nick, spaces, nfn, (100.0 *
-                ((float) dcc[i].status / (float) dcc[i].u.xfer->length)));
+        dprintf(idx, _("  %s%s  %s  (%.1f%% done)\n"), dcc[i].nick, spaces, nfn,
+                (100.0 * ((float) dcc[i].status /
+                (float) dcc[i].u.xfer->length)));
       spaces[len] = ' ';
     }
   }
   if (!cnt)
-    dprintf(idx, TRANSFER_QUEUED_UP);
+    dprintf(idx, _("No files queued up.\n"));
   else
-    dprintf(idx, TRANSFER_TOTAL, cnt);
+    dprintf(idx, _("Total: %d\n"), cnt);
 }
 
 static void fileq_cancel(int idx, char *par)
@@ -248,14 +256,14 @@
         else
           sprintf(s, "/%s%s%s", q->dir, q->dir[0] ? "/" : "", q->file);
         if (wild_match_file(par, s)) {
-          dprintf(idx, TRANSFER_CANCELLED, s, q->to);
+          dprintf(idx, _("Cancelled: %s to %s\n"), s, q->to);
           fnd = 1;
           deq_this(q);
           q = NULL;
           matches++;
         }
         if (!fnd && wild_match_file(par, q->file)) {
-          dprintf(idx, TRANSFER_CANCELLED, s, q->to);
+          dprintf(idx, _("Cancelled: %s to %s\n"), s, q->to);
           fnd = 1;
           deq_this(q);
           q = NULL;
@@ -281,13 +289,13 @@
       else
         nfn++;
       if (wild_match_file(par, nfn)) {
-        dprintf(idx, TRANSFER_ABORT_DCCSEND, nfn);
+        dprintf(idx, _("Cancelled: %s  (aborted dcc send)\n"), nfn);
         if (egg_strcasecmp(dcc[i].nick, dcc[idx].nick))
-          dprintf(DP_HELP, TRANSFER_NOTICE_ABORT, dcc[i].nick, nfn,
-                  dcc[idx].nick);
+          dprintf(DP_HELP, _("NOTICE %s :Transfer of %s aborted by %s\n"),
+                  dcc[i].nick, nfn, dcc[idx].nick);
         if (dcc[i].type == &DCC_GET)
-          putlog(LOG_FILES, "*", TRANSFER_DCC_CANCEL, nfn, dcc[i].nick,
-                 dcc[i].status, dcc[i].u.xfer->length);
+          putlog(LOG_FILES, "*", _("DCC cancel: GET %s (%s) at %lu/%lu"), nfn,
+                 dcc[i].nick, dcc[i].status, dcc[i].u.xfer->length);
         wipe_tmp_filename(dcc[i].u.xfer->filename, i);
         atot++;
         matches++;
@@ -297,9 +305,10 @@
     }
   }
   if (!matches)
-    dprintf(idx, TRANSFER_NO_MATCHES);
+    dprintf(idx, _("No matches.\n"));
   else
-    dprintf(idx, TRANSFER_CANCELLED_FILE, matches, (matches != 1) ? "s" : "");
+    dprintf(idx, P_("Canceled one file", "Cancelled %d files.\n", matches),
+            matches);
   for (i = 0; i < atot; i++)
     if (!at_limit(dcc[idx].nick))
       send_next_file(dcc[idx].nick);
Index: eggdrop1.8/src/patch.h
diff -u eggdrop1.8/src/patch.h:1.25.2.4 eggdrop1.8/src/patch.h:1.25.2.5
--- eggdrop1.8/src/patch.h:1.25.2.4	Wed Nov 10 15:16:56 2010
+++ eggdrop1.8/src/patch.h	Thu Nov 11 14:34:47 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.4 2010/11/10 21:16:56 pseudo Exp $
+ * $Id: patch.h,v 1.25.2.5 2010/11/11 20:34:47 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -41,12 +41,12 @@
  *
  *
  */
-patch("1289423631");            /* current unixtime */
+patch("1289507507");            /* current unixtime */
 /*
  *
  *
  */
-patch("lang2gettext-mod1");
+patch("lang2gettext-mod2");
 /*
  *
  *
----------------------- End of diff -----------------------


More information about the Changes mailing list