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

cvs at eggheads.org cvs at eggheads.org
Tue Nov 16 08:17:07 CST 2010


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

Modified files:
  Tag: gettext
     doc/Changes1.8 src/patch.h src/mod/filesys.mod/dbcompat.c
     src/mod/filesys.mod/filedb3.c src/mod/filesys.mod/files.c
     src/mod/filesys.mod/filesys.c src/mod/irc.mod/chan.c
     src/mod/irc.mod/cmdsirc.c src/mod/irc.mod/irc.c
     src/mod/irc.mod/mode.c src/mod/irc.mod/msgcmds.c
     src/mod/notes.mod/cmdsnote.c src/mod/notes.mod/notes.c
     src/mod/server.mod/cmdsserv.c src/mod/server.mod/server.c
     src/mod/server.mod/servmsg.c
     src/mod/transfer.mod/language/transfer.english.lang

Log message:

Finished converting modules to gettext. Replaced a lot of hardcoded strings.
Fixed some logic errors.

---------------------- diff included ----------------------
Index: eggdrop1.8/doc/Changes1.8
diff -u eggdrop1.8/doc/Changes1.8:1.36.2.5 eggdrop1.8/doc/Changes1.8:1.36.2.6
--- eggdrop1.8/doc/Changes1.8:1.36.2.5	Thu Nov 11 14:34:46 2010
+++ eggdrop1.8/doc/Changes1.8	Tue Nov 16 08:16:56 2010
@@ -1,4 +1,4 @@
-$Id: Changes1.8,v 1.36.2.5 2010/11/11 20:34:46 pseudo Exp $
+$Id: Changes1.8,v 1.36.2.6 2010/11/16 14:16:56 pseudo Exp $
 
 Eggdrop Changes (since version 1.8.0)
 
@@ -6,6 +6,11 @@
 
 1.8.0 (CVS):
 
+  - Finished converting modules to gettext. Replaced a lot of hardcoded
+    strings.
+  - Fixed some logic errors.
+    Patch by: pseudo
+
   - Converted the channels and transfer modules to gettext.
     Patch by: pseudo
 
Index: eggdrop1.8/src/mod/filesys.mod/dbcompat.c
diff -u eggdrop1.8/src/mod/filesys.mod/dbcompat.c:1.1.1.1 eggdrop1.8/src/mod/filesys.mod/dbcompat.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/filesys.mod/dbcompat.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/filesys.mod/dbcompat.c	Tue Nov 16 08:16:56 2010
@@ -4,7 +4,7 @@
  *
  * Written for filedb3 by Fabian Knittel <fknittel at gmx.de>
  *
- * $Id: dbcompat.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: dbcompat.c,v 1.1.1.1.2.1 2010/11/16 14:16:56 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -60,7 +60,7 @@
   lockfile(f);
   filedb_initdb(fdb);
 
-  putlog(LOG_FILES, "*", FILES_CONVERT, path);
+  putlog(LOG_FILES, "*", _("Converting filesystem image in %s ..."), path);
   /* Scan contents of .files and painstakingly create .filedb entries */
   while (!feof(f)) {
     s = nmalloc(121);
Index: eggdrop1.8/src/mod/filesys.mod/filedb3.c
diff -u eggdrop1.8/src/mod/filesys.mod/filedb3.c:1.3 eggdrop1.8/src/mod/filesys.mod/filedb3.c:1.3.2.1
--- eggdrop1.8/src/mod/filesys.mod/filedb3.c:1.3	Tue Oct 19 06:13:33 2010
+++ eggdrop1.8/src/mod/filesys.mod/filedb3.c	Tue Nov 16 08:16:56 2010
@@ -4,7 +4,7 @@
  *
  * Rewritten by Fabian Knittel <fknittel at gmx.de>
  *
- * $Id: filedb3.c,v 1.3 2010/10/19 12:13:33 pseudo Exp $
+ * $Id: filedb3.c,v 1.3.2.1 2010/11/16 14:16:56 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -647,7 +647,7 @@
    */
   dir = opendir(path);
   if (dir == NULL) {
-    putlog(LOG_MISC, "*", FILES_NOUPDATE);
+    putlog(LOG_MISC, "*", _("filedb-update: can't open directory!"));
     return;
   }
   dd = readdir(dir);
@@ -741,7 +741,7 @@
   struct stat st;
 
   if (count >= 2)
-    putlog(LOG_MISC, "*", "(@) warning: %d open filedb's", count);
+    putlog(LOG_MISC, "*", _("(@) warning: %d open filedb's"), count);
   npath = nmalloc(strlen(dccdir) + strlen(path) + 1);
   simple_sprintf(npath, "%s%s", dccdir, path);
   /* Use alternate filename if requested */
@@ -761,7 +761,8 @@
     if (convert_old_files(npath, s)) {
       fdb = fopen(s, "r+b");
       if (fdb == NULL) {
-        putlog(LOG_MISC, "*", FILES_NOCONVERT, npath);
+        putlog(LOG_MISC, "*", _("(!) Broken convert to filedb in %s"),
+               npath);
         my_free(s);
         my_free(npath);
         return NULL;
@@ -922,11 +923,11 @@
          */
         if ((fdbe->flags_req) && (user.global &(USER_MASTER | USER_JANITOR))) {
           s3 = nmalloc(42 + strlen(s2 ? s2 : "") + 6 +
-                       strlen(FILES_REQUIRES) + strlen(fdbe->flags_req) + 1 +
+                       strlen(_("requires")) + strlen(fdbe->flags_req) + 1 +
                        strlen(fdbe->chan ? fdbe->chan : "") + 1);
           sprintf(s3, "%-30s <DIR%s>  (%s %s%s%s)\n", s2,
                   fdbe->stat & FILE_SHARE ?
-                  " SHARE" : "", FILES_REQUIRES, fdbe->flags_req,
+                  " SHARE" : "", _("requires"), fdbe->flags_req,
                   fdbe->chan ? " " : "", fdbe->chan ? fdbe->chan : "");
         } else {
           s3 = nmalloc(38 + strlen(s2 ? s2 : ""));
@@ -1007,13 +1008,13 @@
     fdbe = filedb_getfile(fdb, ftell(fdb), GET_FULL);
   }
   if (is == 0)
-    dprintf(idx, FILES_NOFILES);
+    dprintf(idx, _("No files in this directory.\n"));
   else if (cnt == 0)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     filelist_sort(flist);
     filelist_idxshow(flist, idx);
-    dprintf(idx, "--- %d file%s.\n", cnt, cnt != 1 ? "s" : "");
+    dprintf(idx, P_("--- one file.\n", "--- %d files.\n", cnt), cnt);
   }
   filelist_free(flist);
 }
@@ -1037,17 +1038,17 @@
   }
   fdb = filedb_open(dir, 0);
   if (!fdb) {
-    reject = FILES_DIRDNE;
+    reject = _("Directory does not exist");
   } else {
     filedb_readtop(fdb, NULL);
     fdbe = filedb_matchfile(fdb, ftell(fdb), what);
     filedb_close(fdb);
     if (!fdbe) {
-      reject = FILES_FILEDNE;
+      reject = _("File does not exist");
     } else {
       if ((!(fdbe->stat & FILE_SHARE)) ||
           (fdbe->stat & (FILE_HIDDEN | FILE_DIR)))
-        reject = FILES_NOSHARE;
+        reject = _("File is not shared");
       else {
         s1 = nmalloc(strlen(dccdir) + strlen(dir) + strlen(what) + 2);
         /* Copy to /tmp if needed */
@@ -1058,10 +1059,10 @@
           copyfile(s1, s);
         } else
           s = s1;
-        i = raw_dcc_send(s, "*remote", FILES_REMOTE, s);
+        i = raw_dcc_send(s, "*remote", _("(remote)"), s);
         if (i > 0) {
           wipe_tmp_filename(s, -1);
-          reject = FILES_SENDERR;
+          reject = _("Error trying to send file");
         }
         if (s1 != s)
           my_free(s);
@@ -1086,7 +1087,8 @@
   getdccaddr(&dcc[i].sockname, s, 46);
   simple_sprintf(s, "%s %u %d", s, dcc[i].port, dcc[i].u.xfer->length);
   botnet_send_filesend(idx, s1, from, s);
-  putlog(LOG_FILES, "*", FILES_REMOTEREQ, dir, dir[0] ? "/" : "", what);
+  putlog(LOG_FILES, "*", _("Remote request for /%s%s%s (sending)"), dir,
+         dir[0] ? "/" : "", what);
   my_free(s1);
   my_free(s);
   my_free(what);
Index: eggdrop1.8/src/mod/filesys.mod/files.c
diff -u eggdrop1.8/src/mod/filesys.mod/files.c:1.1.1.1 eggdrop1.8/src/mod/filesys.mod/files.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/filesys.mod/files.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/filesys.mod/files.c	Tue Nov 16 08:16:56 2010
@@ -2,7 +2,7 @@
  * files.c - part of filesys.mod
  *   handles all file system commands
  *
- * $Id: files.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: files.c,v 1.1.1.1.2.1 2010/11/16 14:16:56 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -88,8 +88,10 @@
    */
   if (!(dcc[idx].status & STAT_CHAT))
     show_motd(idx);
-  sub_lang(idx, FILES_WELCOME);
-  sub_lang(idx, FILES_WELCOME1);
+  sub_lang(idx, _("Welcome to the %B file server\n"));
+  sub_lang(idx, _("All file transfers will be sent to '%N' by default.\n"
+           "(You can specify an alternate nick with the 'get' command.)\n"
+           "Type 'help' for help.\n"));
   if (p)
     strcpy(dcc[idx].u.file->dir, p);
   else
@@ -100,18 +102,18 @@
     dcc[idx].u.file->dir[0] = 0;
     f = filedb_open(dcc[idx].u.file->dir, 0);
     if (f == NULL) {
-      dprintf(idx, FILES_BROKEN);
-      dprintf(idx, FILES_INVPATH);
+      dprintf(idx, _("\nThe file system seems to be broken right now.\n"));
+      dprintf(idx, _("(The files-path is set to an invalid directory.)\n"));
       dprintf(idx, "\n\n");
       dccdir[0] = 0;
       chanout_but(-1, dcc[idx].u.file->chat->channel,
-                  "*** %s rejoined the party line.\n", dcc[idx].nick);
+                  _("*** %s rejoined the party line.\n"), dcc[idx].nick);
       botnet_send_join_idx(idx, dcc[idx].u.file->chat->channel);
       return 0;                 /* failed */
     }
   }
   filedb_close(f);
-  dprintf(idx, "%s: /%s\n\n", FILES_CURDIR, dcc[idx].u.file->dir);
+  dprintf(idx, "%s: /%s\n\n", _("Current directory"), dcc[idx].u.file->dir);
   return 1;
 }
 
@@ -134,11 +136,11 @@
   if (!p)
     fdb = filedb_open("", 1);
   if (!fdb) {
-    dprintf(idx, FILES_ILLDIR);
+    dprintf(idx, _("Illegal directory.\n"));
     return;
   }
   filedb_close(fdb);
-  dprintf(idx, "Current directory is now optimized.\n");
+  dprintf(idx, _("Current directory is now optimized.\n"));
 }
 
 /* Given current directory, and the desired changes, fill 'real' with
@@ -315,19 +317,19 @@
 static void cmd_pwd(int idx, char *par)
 {
   putlog(LOG_FILES, "*", "files: #%s# pwd", dcc[idx].nick);
-  dprintf(idx, "%s: /%s\n", FILES_CURDIR, dcc[idx].u.file->dir);
+  dprintf(idx, "%s: /%s\n", _("Current directory"), dcc[idx].u.file->dir);
 }
 
 static void cmd_pending(int idx, char *par)
 {
   show_queued_files(idx);
-  putlog(LOG_FILES, "*", "files: #%s# pending", dcc[idx].nick);
+  putlog(LOG_FILES, "*", _("files: #%s# pending"), dcc[idx].nick);
 }
 
 static void cmd_cancel(int idx, char *par)
 {
   if (!par[0]) {
-    dprintf(idx, "%s: cancel <file-mask>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: cancel <file-mask>\n"));
     return;
   }
   fileq_cancel(idx, par);
@@ -339,11 +341,11 @@
   char *s = NULL;
 
   if (!msg[0]) {
-    dprintf(idx, "%s: cd <new-dir>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: cd <new-dir>\n"));
     return;
   }
   if (!resolve_dir(dcc[idx].u.file->dir, msg, &s, idx)) {
-    dprintf(idx, FILES_NOSUCHDIR);
+    dprintf(idx, _("No such directory.\n"));
     my_free(s);
     return;
   }
@@ -353,7 +355,7 @@
   set_user(&USERENTRY_DCCDIR, dcc[idx].user, dcc[idx].u.file->dir);
   putlog(LOG_FILES, "*", "files: #%s# cd /%s", dcc[idx].nick,
          dcc[idx].u.file->dir);
-  dprintf(idx, "%s: /%s\n", FILES_NEWCURDIR, dcc[idx].u.file->dir);
+  dprintf(idx, "%s: /%s\n", _("New current directory"), dcc[idx].u.file->dir);
 }
 
 static void files_ls(int idx, char *par, int showall)
@@ -369,7 +371,7 @@
       malloc_strcpy(s, par);
       malloc_strcpy(mask, p + 1);
       if (!resolve_dir(dcc[idx].u.file->dir, s, &destdir, idx)) {
-        dprintf(idx, FILES_ILLDIR);
+        dprintf(idx, _("Illegal directory.\n"));
         my_free(s);
         my_free(mask);
         my_free(destdir);
@@ -389,7 +391,7 @@
     my_free(s);
     fdb = filedb_open(destdir, 0);
     if (!fdb) {
-      dprintf(idx, FILES_ILLDIR);
+      dprintf(idx, _("Illegal directory.\n"));
       my_free(destdir);
       my_free(mask);
       return;
@@ -399,13 +401,13 @@
     my_free(destdir);
     my_free(mask);
   } else {
-    putlog(LOG_FILES, "*", "files: #%s# ls", dcc[idx].nick);
+    putlog(LOG_FILES, "*", _("files: #%s# ls"), dcc[idx].nick);
     fdb = filedb_open(dcc[idx].u.file->dir, 0);
     if (fdb) {
       filedb_ls(fdb, idx, "*", showall);
       filedb_close(fdb);
     } else
-      dprintf(idx, FILES_ILLDIR);
+      dprintf(idx, _("Illegal directory.\n"));
   }
 }
 
@@ -436,13 +438,12 @@
       nicklen = (*(int *)me->funcs[SERVER_NICKLEN]);
   }
   if (!par[0]) {
-    dprintf(idx, "%s: %sget <file(s)> [nickname]\n", MISC_USAGE,
-            resend ? "re" : "");
+    dprintf(idx, _("Usage: %sget <file(s)> [nickname]\n"), resend ? "re" : "");
     return;
   }
   what = newsplit(&par);
   if (strlen(par) > nicklen) {
-    dprintf(idx, FILES_BADNICK);
+    dprintf(idx, _("Be reasonable.\n"));
     return;
   }
   p = strrchr(what, '/');
@@ -453,7 +454,7 @@
     if (!resolve_dir(dcc[idx].u.file->dir, s, &destdir, idx)) {
       my_free(destdir);
       my_free(s);
-      dprintf(idx, FILES_ILLDIR);
+      dprintf(idx, _("Illegal directory.\n"));
       return;
     }
     my_free(s);
@@ -468,7 +469,7 @@
     filedb_close(fdb);
     free_fdbe(&fdbe);
     my_free(destdir);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -482,9 +483,9 @@
         bot = nmalloc(strlen(fdbe->sharelink) + 1);
         splitc(bot, fdbe->sharelink, ':');
         if (!egg_strcasecmp(bot, botnetnick))
-          dprintf(idx, "Can't get that file, it's linked to this bot!\n");
+          dprintf(idx, _("Can't get that file, it's linked to this bot!\n"));
         else if (!in_chain(bot))
-          dprintf(idx, FILES_NOTAVAIL, fdbe->filename);
+          dprintf(idx, _("%s isn't available right now.\n"), fdbe->filename);
         else {
           i = nextbot(bot);
           malloc_strcpy(whoto, par);
@@ -493,7 +494,7 @@
           s = nmalloc(strlen(whoto) + strlen(botnetnick) + 13);
           simple_sprintf(s, "%d:%s@%s", dcc[idx].sock, whoto, botnetnick);
           botnet_send_filereq(i, s, bot, fdbe->sharelink);
-          dprintf(idx, FILES_REQUESTED, fdbe->sharelink, bot);
+          dprintf(idx, _("Requested %s from %s ...\n"), fdbe->sharelink, bot);
           /* Increase got count now (or never) */
           fdbe->gots++;
           s = nrealloc(s, strlen(bot) + strlen(fdbe->sharelink) + 2);
@@ -515,7 +516,7 @@
   filedb_close(fdb);
   my_free(destdir);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else
     putlog(LOG_FILES, "*", "files: #%s# %sget %s %s", dcc[idx].nick,
            resend ? "re" : "", what, par);
@@ -558,7 +559,7 @@
   int ok = 0;
 
   if (!par[0]) {
-    dprintf(idx, "%s: hide <file(s)>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: hide <file(s)>\n"));
     return;
   }
   fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -568,7 +569,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), par);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -576,7 +577,7 @@
     if (!(fdbe->stat & FILE_HIDDEN)) {
       fdbe->stat |= FILE_HIDDEN;
       ok++;
-      dprintf(idx, "%s: %s\n", FILES_HID, fdbe->filename);
+      dprintf(idx, _("Hid: %s\n"), fdbe->filename);
       filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_HEADER);
     }
     free_fdbe(&fdbe);
@@ -584,11 +585,10 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# hide %s", dcc[idx].nick, par);
-    if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n", FILES_HID, ok, ok == 1 ? "" : "s");
+    dprintf(idx, P_("Hid one file.\n", "Hid %d files.\n", ok), ok);
   }
 }
 
@@ -600,7 +600,7 @@
   int ok = 0;
 
   if (!par[0]) {
-    dprintf(idx, "%s: unhide <file(s)>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: unhide <file(s)>\n"));
     return;
   }
   fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -610,7 +610,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), par);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -618,7 +618,7 @@
     if (fdbe->stat & FILE_HIDDEN) {
       fdbe->stat &= ~FILE_HIDDEN;
       ok++;
-      dprintf(idx, "%s: %s\n", FILES_UNHID, fdbe->filename);
+      dprintf(idx, "Unhid: %s\n", fdbe->filename);
       filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_HEADER);
     }
     free_fdbe(&fdbe);
@@ -626,11 +626,10 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# unhide %s", dcc[idx].nick, par);
-    if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n", FILES_UNHID, ok, ok == 1 ? "" : "s");
+    dprintf(idx, P_("Unhid one file.\n", "Unhid %d files.\n", ok), ok);
   }
 }
 
@@ -642,7 +641,7 @@
   int ok = 0;
 
   if (!par[0]) {
-    dprintf(idx, "%s: share <file(s)>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: share <file(s)>\n"));
     return;
   }
   fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -652,7 +651,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), par);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -660,7 +659,7 @@
     if (!(fdbe->stat & (FILE_HIDDEN | FILE_DIR | FILE_SHARE))) {
       fdbe->stat |= FILE_SHARE;
       ok++;
-      dprintf(idx, "%s: %s\n", FILES_SHARED, fdbe->filename);
+      dprintf(idx, _("Shared: %s\n"), fdbe->filename);
       filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_HEADER);
     }
     free_fdbe(&fdbe);
@@ -668,11 +667,10 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# share %s", dcc[idx].nick, par);
-    if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n", FILES_SHARED, ok, ok == 1 ? "" : "s");
+    dprintf(idx, P_("Shared one file.\n", "Shared %d files.\n", ok), ok);
   }
 }
 
@@ -684,7 +682,7 @@
   int ok = 0;
 
   if (!par[0]) {
-    dprintf(idx, "%s: unshare <file(s)>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: unshare <file(s)>\n"));
     return;
   }
   fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -694,7 +692,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), par);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -703,7 +701,7 @@
         !(fdbe->stat & (FILE_DIR | FILE_HIDDEN))) {
       fdbe->stat &= ~FILE_SHARE;
       ok++;
-      dprintf(idx, "%s: %s\n", FILES_UNSHARED, fdbe->filename);
+      dprintf(idx, _("Unshared: %s\n"), fdbe->filename);
       filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_HEADER);
     }
     free_fdbe(&fdbe);
@@ -711,11 +709,10 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# unshare %s", dcc[idx].nick, par);
-    if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n", FILES_UNSHARED, ok, ok == 1 ? "" : "s");
+    dprintf(idx, P_("Unshared one file.\n", "Unshared %d files.\n", ok), ok);
   }
 }
 
@@ -732,15 +729,15 @@
     share[60] = 0;
   /* Correct format? */
   if (!(p = strchr(share, ':')) || !par[0])
-    dprintf(idx, "%s: ln <bot:path> <localfile>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: ln <bot:path> <localfile>\n"));
   else if (p[1] != '/')
-    dprintf(idx, "Links to other bots must have absolute paths.\n");
+    dprintf(idx, _("Links to other bots must have absolute paths.\n"));
   else {
     if ((p = strrchr(par, '/'))) {
       *p = 0;
       malloc_strcpy(newfn, p + 1);
       if (!resolve_dir(dcc[idx].u.file->dir, par, &newpath, idx)) {
-        dprintf(idx, FILES_NOSUCHDIR);
+        dprintf(idx, _("No such directory.\n"));
         my_free(newfn);
         my_free(newpath);
         return;
@@ -759,13 +756,13 @@
     fdbe = filedb_matchfile(fdb, ftell(fdb), newfn);
     if (fdbe) {
       if (!fdbe->sharelink) {
-        dprintf(idx, FILES_NORMAL, newfn);
+        dprintf(idx, _("%s is already a normal file.\n"), newfn);
         filedb_close(fdb);
       } else {
         malloc_strcpy(fdbe->sharelink, share);
         filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_ALL);
         filedb_close(fdb);
-        dprintf(idx, FILES_CHGLINK, share);
+        dprintf(idx, _("Changed link to %s\n"), share);
         putlog(LOG_FILES, "*", "files: #%s# ln %s %s",
                dcc[idx].nick, par, share);
       }
@@ -778,7 +775,7 @@
       malloc_strcpy(fdbe->sharelink, share);
       filedb_addfile(fdb, fdbe);
       filedb_close(fdb);
-      dprintf(idx, "%s %s -> %s\n", FILES_ADDLINK, fdbe->filename, share);
+      dprintf(idx, "Added link %s -> %s\n", fdbe->filename, share);
       putlog(LOG_FILES, "*", "files: #%s# ln /%s%s%s %s", dcc[idx].nick,
              newpath, newpath[0] ? "/" : "", newfn, share);
     }
@@ -798,7 +795,7 @@
 
   fn = newsplit(&par);
   if (!fn[0]) {
-    dprintf(idx, "%s: desc <filename> <new description>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: desc <filename> <new description>\n"));
     return;
   }
   /* Fix up desc */
@@ -848,7 +845,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), fn);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     my_free(desc);
     return;
   }
@@ -858,7 +855,7 @@
       ok = 1;
       if ((!(dcc[idx].user->flags & USER_JANITOR)) &&
           (egg_strcasecmp(fdbe->uploader, dcc[idx].nick)))
-        dprintf(idx, FILES_NOTOWNER, fdbe->filename);
+        dprintf(idx, _("You didn't upload %s\n"), fdbe->filename);
       else {
         if (desc[0]) {
           /* If the current description is the same as the new
@@ -875,9 +872,9 @@
         }
         filedb_updatefile(fdb, fdbe->pos, fdbe, UPDATE_ALL);
         if (par[0])
-          dprintf(idx, "%s: %s\n", FILES_CHANGED, fdbe->filename);
+          dprintf(idx, _("Changed: %s\n"), fdbe->filename);
         else
-          dprintf(idx, "%s: %s\n", FILES_BLANKED, fdbe->filename);
+          dprintf(idx, _("Blanked: %s\n"), fdbe->filename);
       }
     }
     free_fdbe(&fdbe);
@@ -885,7 +882,7 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else
     putlog(LOG_FILES, "*", "files: #%s# desc %s", dcc[idx].nick, fn);
   my_free(desc);
@@ -900,7 +897,7 @@
   char *s;
 
   if (!par[0]) {
-    dprintf(idx, "%s: rm <file(s)>\n", MISC_USAGE);
+    dprintf(idx, _("Usage: rm <file(s)>\n"));
     return;
   }
   fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -910,7 +907,7 @@
   fdbe = filedb_matchfile(fdb, ftell(fdb), par);
   if (!fdbe) {
     filedb_close(fdb);
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
     return;
   }
   while (fdbe) {
@@ -924,7 +921,7 @@
       /* Shared file links won't be able to be unlinked */
       if (!(fdbe->sharelink))
         unlink(s);
-      dprintf(idx, "%s: %s\n", FILES_ERASED, fdbe->filename);
+      dprintf(idx, _("Erased: %s\n"), fdbe->filename);
       my_free(s);
     }
     free_fdbe(&fdbe);
@@ -932,11 +929,11 @@
   }
   filedb_close(fdb);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# rm %s", dcc[idx].nick, par);
     if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n", FILES_ERASED, ok, ok == 1 ? "" : "s");
+      dprintf(idx, P_("Erased one file.\n", "Erased %d files.\n", ok), ok);
   }
 }
 
@@ -949,7 +946,7 @@
   struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 };
 
   if (!par[0]) {
-    dprintf(idx, "%s: mkdir <dir> [required-flags] [channel]\n", MISC_USAGE);
+    dprintf(idx, "Usage: mkdir <dir> [required-flags] [channel]\n");
     return;
   }
   name = newsplit(&par);
@@ -959,7 +956,8 @@
   if (name[ret] == '/')
     name[ret] = 0;
   if (strchr(name, '/'))
-    dprintf(idx, "You can only create directories in the current directory\n");
+    dprintf(idx, _("You can only create directories in the current "
+            "directory\n"));
   else {
     flags = newsplit(&par);
     chan = newsplit(&par);
@@ -968,7 +966,7 @@
        * the flags with a +channel. <cybah>
        */
       if (!findchan(flags) && flags[0] != '+') {
-        dprintf(idx, "Invalid channel!\n");
+        dprintf(idx, _("Invalid channel!\n"));
         return;
       } else if (findchan(flags)) {
         /* Flags is a channel. */
@@ -978,7 +976,7 @@
                                  * are flags. */
     }
     if (chan[0] && !findchan(chan)) {
-      dprintf(idx, "Invalid channel!\n");
+      dprintf(idx, _("Invalid channel!\n"));
       return;
     }
     fdb = filedb_open(dcc[idx].u.file->dir, 0);
@@ -1001,10 +999,10 @@
       fdbe->stat = FILE_DIR;
       malloc_strcpy(fdbe->filename, name);
       fdbe->uploaded = now;
-      dprintf(idx, "%s /%s%s%s\n", FILES_CREADIR, dcc[idx].u.file->dir,
+      dprintf(idx, _("Created directory /%s%s%s\n"), dcc[idx].u.file->dir,
               dcc[idx].u.file->dir[0] ? "/" : "", name);
     } else if (!(fdbe->stat & FILE_DIR)) {
-      dprintf(idx, FILES_NOSUCHDIR);
+      dprintf(idx, _("No such directory.\n"));
       free_fdbe(&fdbe);
       filedb_close(fdb);
       return;
@@ -1015,17 +1013,17 @@
       break_down_flags(flags, &fr, NULL);
       build_flags(buffer, &fr, NULL);
       malloc_strcpy_nocheck(fdbe->flags_req, buffer);
-      dprintf(idx, FILES_CHGACCESS, name, buffer);
+      dprintf(idx, _("Changed %s/ to require +%s to access\n"), name, buffer);
     } else if (!chan[0]) {
       my_free(fdbe->flags_req);
-      dprintf(idx, FILES_CHGNACCESS, name);
+      dprintf(idx, _("Changes %s/ to require no flags to access\n"), name);
     }
     if (chan[0]) {
       malloc_strcpy(fdbe->chan, chan);
-      dprintf(idx, "Access set to channel: %s\n", chan);
+      dprintf(idx, _("Access set to channel: %s\n"), chan);
     } else if (!flags[0]) {
       my_free(fdbe->chan);
-      dprintf(idx, "Access set to all channels.\n");
+      dprintf(idx, _("Access set to all channels.\n"));
     }
     if (!fdbe->pos)
       fdbe->pos = POS_NEW;
@@ -1046,7 +1044,8 @@
   if (name[strlen(name) - 1] == '/')
     name[strlen(name) - 1] = 0;
   if (strchr(name, '/'))
-    dprintf(idx, "You can only create directories in the current directory\n");
+    dprintf(idx, _("You can only create directories in the current "
+            "directory\n"));
   else {
     fdb = filedb_open(dcc[idx].u.file->dir, 0);
     if (!fdb) {
@@ -1056,13 +1055,13 @@
     filedb_readtop(fdb, NULL);
     fdbe = filedb_matchfile(fdb, ftell(fdb), name);
     if (!fdbe) {
-      dprintf(idx, FILES_NOSUCHDIR);
+      dprintf(idx, _("No such directory.\n"));
       filedb_close(fdb);
       my_free(name);
       return;
     }
     if (!(fdbe->stat & FILE_DIR)) {
-      dprintf(idx, FILES_NOSUCHDIR);
+      dprintf(idx, _("No such directory.\n"));
       filedb_close(fdb);
       my_free(name);
       free_fdbe(&fdbe);
@@ -1077,7 +1076,7 @@
     unlink(s);
     sprintf(s, "%s%s/%s", dccdir, dcc[idx].u.file->dir, name);
     if (rmdir(s) == 0) {
-      dprintf(idx, "%s /%s%s%s\n", FILES_REMDIR, dcc[idx].u.file->dir,
+      dprintf(idx, _("Removed directory /%s%s%s\n"), dcc[idx].u.file->dir,
               dcc[idx].u.file->dir[0] ? "/" : "", name);
       filedb_delfile(fdb, fdbe->pos);
       filedb_close(fdb);
@@ -1106,8 +1105,8 @@
 
   fn = newsplit(&par);
   if (!par[0]) {
-    dprintf(idx, "%s: %s <oldfilepath> <newfilepath>\n",
-            MISC_USAGE, copy ? "cp" : "mv");
+    dprintf(idx, _("Usage: %s <oldfilepath> <newfilepath>\n"),
+            copy ? "cp" : "mv");
     return;
   }
   p = strrchr(fn, '/');
@@ -1116,7 +1115,7 @@
     malloc_strcpy(s, fn);
     strcpy(fn, p + 1);
     if (!resolve_dir(dcc[idx].u.file->dir, s, &oldpath, idx)) {
-      dprintf(idx, FILES_ILLSOURCE);
+      dprintf(idx, _("Illegal source directory.\n"));
       my_free(s);
       my_free(oldpath);
       return;
@@ -1137,7 +1136,7 @@
       malloc_strcpy(newfn, p + 1);
     }
     if (!resolve_dir(dcc[idx].u.file->dir, s, &newpath, idx)) {
-      dprintf(idx, FILES_ILLDEST);
+      dprintf(idx, _("Illegal destination directory.\n"));
       my_free(newfn);
       my_free(s);
       my_free(oldpath);
@@ -1149,7 +1148,7 @@
   my_free(s);
   /* Stupidness checks */
   if ((!strcmp(oldpath, newpath)) && ((!newfn[0]) || (!strcmp(newfn, fn)))) {
-    dprintf(idx, FILES_STUPID, copy ? FILES_COPY : FILES_MOVE);
+    dprintf(idx, _("You can't copy or move files on top of themselves.\n"));
     my_free(oldpath);
     my_free(newpath);
     my_free(newfn);
@@ -1193,7 +1192,7 @@
     filedb_entry *check_for_more;
     check_for_more = filedb_matchfile(fdb_old, ftell(fdb_old), fn);
     if (check_for_more) {
-      dprintf(idx, FILES_ILLDEST);
+      dprintf(idx, _("Illegal destination directory.\n"));
       free_fdbe(&fdbe_old);
       free_fdbe(&check_for_more);
       if (fdb_new != fdb_old) filedb_close(fdb_new);
@@ -1219,8 +1218,8 @@
       sprintf(s1, "%s%s%s%s", dccdir, newpath,
               newpath[0] ? "/" : "", newfn[0] ? newfn : fdbe_old->filename);
       if (!strcmp(s, s1)) {
-        dprintf(idx, "%s /%s%s%s %s\n", FILES_SKIPSTUPID,
-                copy ? FILES_COPY : FILES_MOVE, newpath,
+        dprintf(idx, copy ? _("Copy /%s%s%s onto itself? Nuh uh.\n") :
+                _("Move /%s%s%s onto itself? Nuh uh.\n"), newpath,
                 newpath[0] ? "/" : "", newfn[0] ? newfn : fdbe_old->filename);
         skip_this = 1;
       }
@@ -1278,13 +1277,16 @@
     filedb_close(fdb_new);
   filedb_close(fdb_old);
   if (!ok)
-    dprintf(idx, FILES_NOMATCH);
+    dprintf(idx, _("No matching files.\n"));
   else {
     putlog(LOG_FILES, "*", "files: #%s# %s %s%s%s %s", dcc[idx].nick,
            copy ? "cp" : "mv", oldpath, oldpath[0] ? "/" : "", fn, par);
-    if (ok > 1)
-      dprintf(idx, "%s %d file%s.\n",
-              copy ? FILES_COPIED : FILES_MOVED, ok, ok == 1 ? "" : "s");
+    if (ok > 1) {
+      if (copy)
+        dprintf(idx, P_("Copied one file.\n", "Copied %d files.\n", ok), ok);
+      else
+        dprintf(idx, P_("Moved one file.\n", "Moved %d files.\n", ok), ok);
+    }
   }
   my_free(oldpath);
   my_free(newpath);
@@ -1314,7 +1316,7 @@
   struct userrec *u;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: filestats <user>\n");
+    dprintf(idx, _("Usage: filestats <user>\n"));
     return 0;
   }
   nick = newsplit(&par);
@@ -1322,11 +1324,11 @@
   if (nick[0] == 0)
     tell_file_stats(idx, dcc[idx].nick);
   else if (!(u = get_user_by_handle(userlist, nick)))
-    dprintf(idx, "No such user.\n");
+    dprintf(idx, _("No such user.\n"));
   else if (!strcmp(par, "clear") && dcc[idx].user &&
            (dcc[idx].user->flags & USER_JANITOR)) {
     set_user(&USERENTRY_FSTAT, u, NULL);
-    dprintf(idx, "Cleared filestats for %s.\n", nick);
+    dprintf(idx, _("Cleared filestats for %s.\n"), nick);
   } else
     tell_file_stats(idx, nick);
   return 0;
@@ -1345,7 +1347,7 @@
 
     (f) (u, idx, par);
   } else
-    dprintf(idx, "Sending of notes is not supported.\n");
+    dprintf(idx, _("Sending of notes is not supported.\n"));
 }
 
 static cmd_t myfiles[] = {
@@ -1463,7 +1465,7 @@
       s = nmalloc(strlen(whoto) + strlen(botnetnick) + 13);
       simple_sprintf(s, "%d:%s@%s", dcc[idx].sock, whoto, botnetnick);
       botnet_send_filereq(i, s, bot, fdbe->sharelink);
-      dprintf(idx, FILES_REQUESTED, fdbe->sharelink, bot);
+      dprintf(idx, _("Requested %s from %s ...\n"), fdbe->sharelink, bot);
       /* Increase got count now (or never) */
       fdbe->gots++;
       s = nrealloc(s, strlen(bot) + strlen(fdbe->sharelink) + 2);
Index: eggdrop1.8/src/mod/filesys.mod/filesys.c
diff -u eggdrop1.8/src/mod/filesys.mod/filesys.c:1.5 eggdrop1.8/src/mod/filesys.mod/filesys.c:1.5.2.1
--- eggdrop1.8/src/mod/filesys.mod/filesys.c:1.5	Wed Oct 20 07:07:13 2010
+++ eggdrop1.8/src/mod/filesys.mod/filesys.c	Tue Nov 16 08:16:56 2010
@@ -2,7 +2,7 @@
  * filesys.c -- part of filesys.mod
  *   main file of the filesys eggdrop module
  *
- * $Id: filesys.c,v 1.5 2010/10/20 13:07:13 pseudo Exp $
+ * $Id: filesys.c,v 1.5.2.1 2010/11/16 14:16:56 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -157,11 +157,11 @@
   x = check_tcl_bind(H_fil, cmd, &fr, " $_fil1 $_fil2 $_fil3",
                      MATCH_PARTIAL | BIND_USE_ATTR | BIND_HAS_BUILTINS);
   if (x == BIND_AMBIGUOUS) {
-    dprintf(idx, "Ambiguous command.\n");
+    dprintf(idx, _("Ambiguous command.\n"));
     return 0;
   }
   if (x == BIND_NOMATCH) {
-    dprintf(idx, "What?  You need 'help'\n");
+    dprintf(idx, _("What?  You need 'help'\n"));
     return 0;
   }
 
@@ -182,9 +182,9 @@
     return;
   if (u_pass_match(u, buf)) {
     if (too_many_filers()) {
-      dprintf(idx, "Too many people are in the file system right now.\n");
-      dprintf(idx, "Please try again later.\n");
-      putlog(LOG_MISC, "*", "File area full: DCC chat [%s]%s", dcc[idx].nick,
+      dprintf(idx, _("Too many people are in the file system right now.\n"));
+      dprintf(idx, _("Please try again later.\n"));
+      putlog(LOG_MISC, "*", _("File area full: DCC chat [%s]%s"), dcc[idx].nick,
              dcc[idx].host);
       killsock(dcc[idx].sock);
       lostdcc(idx);
@@ -193,10 +193,10 @@
     dcc[idx].type = &DCC_FILES;
     if (dcc[idx].status & STAT_TELNET)
       dprintf(idx, "\377\374\001\n");   /* turn echo back on */
-    putlog(LOG_FILES, "*", "File system: [%s]%s/%d", dcc[idx].nick,
+    putlog(LOG_FILES, "*", _("File system: [%s]%s/%d"), dcc[idx].nick,
            dcc[idx].host, dcc[idx].port);
     if (!welcome_to_files(idx)) {
-      putlog(LOG_FILES, "*", "File system broken.");
+      putlog(LOG_FILES, "*", _("File system broken."));
       killsock(dcc[idx].sock);
       lostdcc(idx);
     } else {
@@ -206,8 +206,8 @@
     }
     return;
   }
-  dprintf(idx, "Negative on that, Houston.\n");
-  putlog(LOG_MISC, "*", "Bad password: DCC chat [%s]%s", dcc[idx].nick,
+  dprintf(idx, _("Negative on that, Houston.\n"));
+  putlog(LOG_MISC, "*", _("Bad password: DCC chat [%s]%s"), dcc[idx].nick,
          dcc[idx].host);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -249,13 +249,13 @@
   } else if (got_files_cmd(idx, buf)) {
     dprintf(idx, "*** Ja mata!\n");
     flush_lines(idx, dcc[idx].u.file->chat);
-    putlog(LOG_FILES, "*", "DCC user [%s]%s left file system", dcc[idx].nick,
+    putlog(LOG_FILES, "*", _("DCC user [%s]%s left file system"), dcc[idx].nick,
            dcc[idx].host);
     set_user(&USERENTRY_DCCDIR, dcc[idx].user, dcc[idx].u.file->dir);
     if (dcc[idx].status & STAT_CHAT) {
       struct chat_info *ci;
 
-      dprintf(idx, "Returning you to command mode...\n");
+      dprintf(idx, _("Returning you to command mode...\n"));
       ci = dcc[idx].u.file->chat;
       my_free(dcc[idx].u.file);
       dcc[idx].u.chat = ci;
@@ -263,13 +263,13 @@
       dcc[idx].type = &DCC_CHAT;
       if (dcc[idx].u.chat->channel >= 0) {
         chanout_but(-1, dcc[idx].u.chat->channel,
-                    "*** %s has returned.\n", dcc[idx].nick);
+                    _("*** %s has returned.\n"), dcc[idx].nick);
         if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
           botnet_send_join_idx(idx, -1);
       }
     } else {
-      dprintf(idx, "Dropping connection now.\n");
-      putlog(LOG_FILES, "*", "Left files: [%s]%s/%d", dcc[idx].nick,
+      dprintf(idx, _("Dropping connection now.\n"));
+      putlog(LOG_FILES, "*", _("Left files: [%s]%s/%d"), dcc[idx].nick,
              dcc[idx].host, dcc[idx].port);
       killsock(dcc[idx].sock);
       lostdcc(idx);
@@ -289,22 +289,22 @@
   if (u == NULL)
     return;
   if (!(fs = get_user(&USERENTRY_FSTAT, u))) {
-    dprintf(idx, "No file statistics for %s.\n", hand);
+    dprintf(idx, _("No file statistics for %s.\n"), hand);
   } else {
-    dprintf(idx, "  uploads: %4u / %6luk\n", fs->uploads, fs->upload_ks);
-    dprintf(idx, "downloads: %4u / %6luk\n", fs->dnloads, fs->dnload_ks);
+    dprintf(idx, _("  uploads: %4u / %6luk\n"), fs->uploads, fs->upload_ks);
+    dprintf(idx, _("downloads: %4u / %6luk\n"), fs->dnloads, fs->dnload_ks);
     if (fs->uploads)
       fr = ((float) fs->dnloads / (float) fs->uploads);
     if (fs->upload_ks)
       kr = ((float) fs->dnload_ks / (float) fs->upload_ks);
     if (fr < 0.0)
-      dprintf(idx, "(infinite file leech)\n");
+      dprintf(idx, _("(infinite file leech)\n"));
     else
-      dprintf(idx, "leech ratio (files): %6.2f\n", fr);
+      dprintf(idx, _("leech ratio (files): %6.2f\n"), fr);
     if (kr < 0.0)
-      dprintf(idx, "(infinite size leech)\n");
+      dprintf(idx, _("(infinite size leech)\n"));
     else
-      dprintf(idx, "leech ratio (size) : %6.2f\n", kr);
+      dprintf(idx, _("leech ratio (size) : %6.2f\n"), kr);
   }
 }
 
@@ -314,21 +314,22 @@
   static struct chat_info *ci;
 
   if (dccdir[0] == 0)
-    dprintf(idx, "There is no file transfer area.\n");
+    dprintf(idx, _("There is no file transfer area.\n"));
   else if (too_many_filers()) {
-    dprintf(idx, "The maximum of %d %s in the file area right now.\n",
-            dcc_users, (dcc_users != 1) ? "people are" : "person is");
-    dprintf(idx, "Please try again later.\n");
+    dprintf(idx, P_("The maximum of one person is in the file area "
+            "right now.\n", "The maximum of %d people are in the file area "
+            "right now.\n", dcc_users), dcc_users);
+    dprintf(idx, _("Please try again later.\n"));
   } else {
     if (!(atr & (USER_MASTER | USER_XFER)))
-      dprintf(idx, "You don't have access to the file area.\n");
+      dprintf(idx, _("You don't have access to the file area.\n"));
     else {
       putlog(LOG_CMDS, "*", "#%s# files", dcc[idx].nick);
-      dprintf(idx, "Entering file system...\n");
+      dprintf(idx, _("Entering file system...\n"));
       if (dcc[idx].u.chat->channel >= 0) {
 
         chanout_but(-1, dcc[idx].u.chat->channel,
-                    "*** %s has left: file system\n", dcc[idx].nick);
+                    _("*** %s has left: file system\n"), dcc[idx].nick);
         if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
           botnet_send_part_idx(idx, "file system");
       }
@@ -344,10 +345,10 @@
         my_free(dcc[idx].u.file);
         dcc[idx].u.chat = ci;
         dcc[idx].type = &DCC_CHAT;
-        putlog(LOG_FILES, "*", "File system broken.");
+        putlog(LOG_FILES, "*", _("File system broken."));
         if (dcc[idx].u.chat->channel >= 0) {
           chanout_but(-1, dcc[idx].u.chat->channel,
-                      "*** %s has returned.\n", dcc[idx].nick);
+                      _("*** %s has returned.\n"), dcc[idx].nick);
           if (dcc[idx].u.chat->channel < GLOBAL_CHANS)
             botnet_send_join_idx(idx, -1);
         }
@@ -371,32 +372,32 @@
   else
     x = raw_dcc_send(filename, nick, dcc[idx].nick, dir);
   if (x == DCCSEND_FULL) {
-    dprintf(idx, "Sorry, too many DCC connections.  (try again later)\n");
-    putlog(LOG_FILES, "*", "DCC connections full: %sGET %s [%s]", filename,
+    dprintf(idx, _("Sorry, too many DCC connections. (try again later)\n"));
+    putlog(LOG_FILES, "*", _("DCC connections full: %sGET %s [%s]"), filename,
            resend ? "RE" : "", dcc[idx].nick);
     return 0;
   }
   if (x == DCCSEND_NOSOCK) {
     if (reserved_port_min) {
-      dprintf(idx, "All my DCC SEND ports are in use.  Try later.\n");
-      putlog(LOG_FILES, "*", "DCC port in use (can't open): %sGET %s [%s]",
+      dprintf(idx, _("All my DCC SEND ports are in use. Try later.\n"));
+      putlog(LOG_FILES, "*", _("DCC port in use (can't open): %sGET %s [%s]"),
              resend ? "RE" : "", filename, dcc[idx].nick);
     } else {
-      dprintf(idx, "Unable to listen at a socket.\n");
-      putlog(LOG_FILES, "*", "DCC socket error: %sGET %s [%s]", filename,
+      dprintf(idx, _("Unable to listen at a socket.\n"));
+      putlog(LOG_FILES, "*", _("DCC socket error: %sGET %s [%s]"), filename,
              resend ? "RE" : "", dcc[idx].nick);
     }
     return 0;
   }
   if (x == DCCSEND_BADFN) {
-    dprintf(idx, "File not found ?\n");
-    putlog(LOG_FILES, "*", "DCC file not found: %sGET %s [%s]", filename,
+    dprintf(idx, _("File not found ?\n"));
+    putlog(LOG_FILES, "*", _("DCC file not found: %sGET %s [%s]"), filename,
            resend ? "RE" : "", dcc[idx].nick);
     return 0;
   }
   if (x == DCCSEND_FEMPTY) {
-    dprintf(idx, "The file is empty.  Aborted transfer.\n");
-    putlog(LOG_FILES, "*", "DCC file is empty: %s [%s]", filename,
+    dprintf(idx, _("The file is empty. Aborted transfer.\n"));
+    putlog(LOG_FILES, "*", _("DCC file is empty: %s [%s]"), filename,
            dcc[idx].nick);
     return 0;
   }
@@ -416,10 +417,17 @@
       *p = '_';
   }
 
-  if (egg_strcasecmp(nick, dcc[idx].nick))
-    dprintf(DP_HELP, "NOTICE %s :Here is %s file from %s %s...\n", nick,
-            resend ? "the" : "a", dcc[idx].nick, resend ? "again " : "");
-  dprintf(idx, "%sending: %s to %s\n", resend ? "Res" : "S", nfn, nick);
+  if (egg_strcasecmp(nick, dcc[idx].nick)) {
+    if (resend) {
+      dprintf(DP_HELP, _("NOTICE %s :Here is the file from %s again...\n"),
+              nick, dcc[idx].nick);
+      dprintf(idx, _("Resending: %s to %s\n"), nfn, nick);
+    } else {
+      dprintf(DP_HELP, _("NOTICE %s :Here is a file from %s ...\n"),
+              nick, dcc[idx].nick);
+      dprintf(idx, _("Sending: %s to %s\n"), nfn, nick);
+    }
+  }
   my_free(buf);
   return 1;
 }
@@ -432,15 +440,15 @@
   if (nick && strlen(nick) > NICKMAX)
     nick[NICKMAX] = 0;
   if (dccdir[0] == 0) {
-    dprintf(idx, "DCC file transfers not supported.\n");
-    putlog(LOG_FILES, "*", "Refused dcc %sget %s from [%s]", resend ? "re" : "",
-           fn, dcc[idx].nick);
+    dprintf(idx, _("DCC file transfers not supported.\n"));
+    putlog(LOG_FILES, "*", _("Refused dcc %sget %s from [%s]"),
+           resend ? "re" : "", fn, dcc[idx].nick);
     return 0;
   }
   if (strchr(fn, '/') != NULL) {
-    dprintf(idx, "Filename cannot have '/' in it...\n");
-    putlog(LOG_FILES, "*", "Refused dcc %sget %s from [%s]", resend ? "re" : "",
-           fn, dcc[idx].nick);
+    dprintf(idx, _("Filename cannot have '/' in it...\n"));
+    putlog(LOG_FILES, "*", _("Refused dcc %sget %s from [%s]"),
+           resend ? "re" : "", fn, dcc[idx].nick);
     return 0;
   }
   if (dir[0]) {
@@ -452,9 +460,9 @@
   }
 
   if (!file_readable(s)) {
-    dprintf(idx, "No such file.\n");
-    putlog(LOG_FILES, "*", "Refused dcc %sget %s from [%s]", resend ? "re" :
-           "", fn, dcc[idx].nick);
+    dprintf(idx, _("No such file.\n"));
+    putlog(LOG_FILES, "*", _("Refused dcc %sget %s from [%s]"),
+           resend ? "re" : "", fn, dcc[idx].nick);
     my_free(s);
     return 0;
   }
@@ -467,7 +475,7 @@
 
     sprintf(xxx, "%d*%s%s", (int) strlen(dccdir), dccdir, dir);
     queue_file(xxx, fn, dcc[idx].nick, nick);
-    dprintf(idx, "Queued: %s to %s\n", fn, nick);
+    dprintf(idx, _("Queued: %s to %s\n"), fn, nick);
     my_free(s);
     return 1;
   }
@@ -481,9 +489,9 @@
     sprintf(s1, "%s%s", tempdir, tempfn);
     my_free(tempfn);
     if (copyfile(s, s1) != 0) {
-      dprintf(idx, "Can't make temporary copy of file!\n");
+      dprintf(idx, _("Can't make temporary copy of file!\n"));
       putlog(LOG_FILES | LOG_MISC, "*",
-             "Refused dcc %sget %s: copy to %s FAILED!",
+             _("Refused dcc %sget %s: copy to %s FAILED!"),
              resend ? "re" : "", fn, tempdir);
       my_free(s);
       my_free(s1);
@@ -532,8 +540,8 @@
 
 static void tout_dcc_files_pass(int i)
 {
-  dprintf(i, "Timeout.\n");
-  putlog(LOG_MISC, "*", "Password timeout on dcc chat: [%s]%s", dcc[i].nick,
+  dprintf(i, _("Timeout.\n"));
+  putlog(LOG_MISC, "*", _("Password timeout on dcc chat: [%s]%s"), dcc[i].nick,
          dcc[i].host);
   killsock(dcc[i].sock);
   lostdcc(i);
@@ -569,7 +577,7 @@
 static void eof_dcc_files(int idx)
 {
   dcc[idx].u.file->chat->con_flags = 0;
-  putlog(LOG_MISC, "*", "Lost dcc connection to %s (%s/%d)", dcc[idx].nick,
+  putlog(LOG_MISC, "*", _("Lost dcc connection to %s (%s/%d)"), dcc[idx].nick,
          dcc[idx].host, dcc[idx].port);
   killsock(dcc[idx].sock);
   lostdcc(idx);
@@ -660,34 +668,38 @@
   strcpy(buf, text);
   param = newsplit(&msg);
   if (!(atr & USER_XFER)) {
-    putlog(LOG_FILES, "*", "Refused DCC SEND %s (no access): %s!%s", param,
+    putlog(LOG_FILES, "*", _("Refused DCC SEND %s (no access): %s!%s"), param,
            nick, from);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :No access\n", nick);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("No access"));
   } else if (!dccin[0] && !upload_to_cd) {
-    dprintf(DP_HELP, "NOTICE %s :DCC file transfers not supported.\n", nick);
-    putlog(LOG_FILES, "*", "Refused dcc send %s from %s!%s", param, nick, from);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("DCC file transfers not "
+            "supported."));
+    putlog(LOG_FILES, "*", _("Refused dcc send %s from %s!%s"),
+           param, nick, from);
   } else if (strchr(param, '/')) {
-    dprintf(DP_HELP, "NOTICE %s :Filename cannot have '/' in it...\n", nick);
-    putlog(LOG_FILES, "*", "Refused dcc send %s from %s!%s", param, nick, from);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Filename cannot have '/' "
+            "in it..."));
+    putlog(LOG_FILES, "*", _("Refused dcc send %s from %s!%s"), param, nick,
+           from);
   } else {
     ip = newsplit(&msg);
     prt = newsplit(&msg);
     if (atoi(prt) < 1024 || atoi(prt) > 65535) {
       /* Invalid port */
-      dprintf(DP_HELP, "NOTICE %s :%s (invalid port)\n", nick,
-              DCC_CONNECTFAILED1);
-      putlog(LOG_FILES, "*", "Refused dcc send %s (%s): invalid port", param,
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Failed to connect "
+              "(invalid port)"));
+      putlog(LOG_FILES, "*", _("Refused dcc send %s (%s): invalid port"), param,
              nick);
     } else if (atoi(msg) == 0) {
-      dprintf(DP_HELP, "NOTICE %s :Sorry, file size info must be included.\n",
-              nick);
-      putlog(LOG_FILES, "*", "Refused dcc send %s (%s): no file size",
+      dprintf(DP_HELP, "NOTICE %s :%s\n", _("Sorry, file size info must be "
+              "included."), nick);
+      putlog(LOG_FILES, "*", _("Refused dcc send %s (%s): no file size"),
              param, nick);
     } else if (dcc_maxsize && (atoi(msg) > (dcc_maxsize * 1024))) {
-      dprintf(DP_HELP, "NOTICE %s :Sorry, file too large.\n", nick);
-      putlog(LOG_FILES, "*", "Refused dcc send %s (%s): file too large", param,
-             nick);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Sorry, file too large."));
+      putlog(LOG_FILES, "*", _("Refused dcc send %s (%s): file too large"),
+             param, nick);
     } else {
       /* This looks like a good place for a sanity check. */
       if (!sanitycheck_dcc(nick, from, ip, prt)) {
@@ -696,8 +708,9 @@
       }
       i = new_dcc(&DCC_DNSWAIT, sizeof(struct dns_info));
       if (i < 0) {
-        dprintf(DP_HELP, "NOTICE %s :Sorry, too many DCC connections.\n", nick);
-        putlog(LOG_MISC, "*", "DCC connections full: SEND %s (%s!%s)", param,
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Sorry, too many DCC "
+                "connections."));
+        putlog(LOG_MISC, "*", _("DCC connections full: SEND %s (%s!%s)"), param,
                nick, from);
         return;
       }
@@ -797,7 +810,7 @@
   sprintf(s1, "%s%s", dcc[i].u.xfer->dir, dcc[i].u.xfer->origname);
 
   if (file_readable(s1)) {
-    dprintf(DP_HELP, "NOTICE %s :File `%s' already exists.\n", dcc[i].nick,
+    dprintf(DP_HELP, _("NOTICE %s :File `%s' already exists.\n"), dcc[i].nick,
             dcc[i].u.xfer->origname);
     lostdcc(i);
     my_free(s1);
@@ -809,7 +822,7 @@
         if ((dcc[j].type->flags & (DCT_FILETRAN | DCT_FILESEND)) ==
             (DCT_FILETRAN | DCT_FILESEND)) {
           if (!strcmp(dcc[i].u.xfer->origname, dcc[j].u.xfer->origname)) {
-            dprintf(DP_HELP, "NOTICE %s :File `%s' is already being sent.\n",
+            dprintf(DP_HELP, _("NOTICE %s :File `%s' is already being sent.\n"),
                     dcc[i].nick, dcc[i].u.xfer->origname);
             lostdcc(i);
             return;
@@ -823,7 +836,7 @@
     my_free(s1);
     if (dcc[i].u.xfer->f == NULL) {
       dprintf(DP_HELP,
-              "NOTICE %s :Can't create file `%s' (temp dir error)\n",
+              _("NOTICE %s :Can't create file `%s' (temp dir error)\n"),
               dcc[i].nick, dcc[i].u.xfer->origname);
       lostdcc(i);
     } else {
@@ -873,28 +886,33 @@
   get_user_flagrec(u, &fr, 0);
   param = newsplit(&msg);
   if (dcc_total == max_dcc && increase_socks_max()) {
-    putlog(LOG_MISC, "*", DCC_TOOMANYDCCS2, "CHAT(file)", param, nick, from);
+    putlog(LOG_MISC, "*", _("DCC connections full: CHAT(file) %s (%s!%s)"),
+           param, nick, from);
   } else if (glob_party(fr) || (!require_p && chan_op(fr)))
     return 0;                   /* Allow ctcp.so to pick up the chat */
   else if (!glob_xfer(fr)) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, DCC_REFUSED2);
-    putlog(LOG_MISC, "*", "%s: %s!%s", DCC_REFUSED, nick, from);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("No access"));
+    putlog(LOG_MISC, "*", "%s: %s!%s", _("Refused DCC chat (no access)"),
+           nick, from);
   } else if (u_pass_match(u, "-")) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, DCC_REFUSED3);
-    putlog(LOG_MISC, "*", "%s: %s!%s", DCC_REFUSED4, nick, from);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You must have "
+              "a password set."));
+    putlog(LOG_MISC, "*", "%s: %s!%s", _("Refused DCC chat (no password)"),
+           nick, from);
   } else if (!dccdir[0]) {
-    putlog(LOG_MISC, "*", "%s: %s!%s", DCC_REFUSED5, nick, from);
+    putlog(LOG_MISC, "*", "%s: %s!%s", _("Refused DCC chat "
+           "(+x but no file area)"), nick, from);
   } else {
     ip = newsplit(&msg);
     prt = newsplit(&msg);
     if (atoi(prt) < 1024 || atoi(prt) > 65535) {
       /* Invalid port */
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s (invalid port)\n", nick,
-                DCC_CONNECTFAILED1);
-      putlog(LOG_FILES, "*", "%s: %s!%s", DCC_REFUSED7, nick, from);
+        dprintf(DP_HELP, "NOTICE %s :Failed to connect (invalid port)\n", nick);
+      putlog(LOG_FILES, "*", _("Refused DCC chat: %s!%s (invalid port)"),
+             nick, from);
       return 1;
     }
     i = new_dcc(&DCC_FILES_PASS, sizeof(struct file_info));
@@ -902,9 +920,10 @@
     if (dcc[i].sock < 0) {
       lostdcc(i);
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s (%s)\n", nick, DCC_CONNECTFAILED1, strerror(errno));
-      putlog(LOG_MISC, "*", "%s: CHAT(file) (%s!%s)", DCC_CONNECTFAILED2, nick,
-             from);
+        dprintf(DP_HELP, _("NOTICE %s :Failed to connect (%s)\n"), nick,
+                strerror(errno));
+      putlog(LOG_MISC, "*", _("DCC connection failed: CHAT(file) (%s!%s)"),
+             nick, from);
       putlog(LOG_MISC, "*", "    (%s)", strerror(errno));
     } else {
       strcpy(dcc[i].nick, u->handle);
@@ -914,8 +933,9 @@
       dcc[i].u.file->chat = get_data_ptr(sizeof(struct chat_info));
       strcpy(dcc[i].u.file->chat->con_chan, "*");
       dcc[i].user = u;
-      putlog(LOG_MISC, "*", "DCC connection: CHAT(file) (%s!%s)", nick, from);
-      dprintf(i, "%s\n", DCC_ENTERPASS);
+      putlog(LOG_MISC, "*", _("DCC connection: CHAT(file) (%s!%s)"), nick,
+             from);
+      dprintf(i, "%s\n", _("Enter your password."));
     }
   }
   return 1;
@@ -950,23 +970,22 @@
     int size = filesys_expmem();
 
     if (dccdir[0]) {
-      dprintf(idx, "    DCC file path: %s", dccdir);
+      dprintf(idx, _("    DCC file path: %s"), dccdir);
       if (upload_to_cd)
-        dprintf(idx, "\n      Incoming: (user's current directory)\n");
+        dprintf(idx, _("\n      Incoming: (user's current directory)\n"));
       else if (dccin[0])
-        dprintf(idx, "\n      Incoming: %s\n", dccin);
+        dprintf(idx, _("\n      Incoming: %s\n"), dccin);
       else
-        dprintf(idx, " (no uploads)\n");
+        dprintf(idx, _(" (no uploads)\n"));
 
       if (dcc_users)
-        dprintf(idx, "    Max users: %d\n", dcc_users);
+        dprintf(idx, _("    Max users: %d\n"), dcc_users);
       if (upload_to_cd || dccin[0])
-        dprintf(idx, "    Max upload file size: %dk\n", dcc_maxsize);
+        dprintf(idx, _("    Max upload file size: %dk\n"), dcc_maxsize);
     } else
-      dprintf(idx, "    Filesystem module loaded, but no active dcc path "
-              "exists.\n");
-    dprintf(idx, "    Using %d byte%s of memory\n", size,
-            (size != 1) ? "s" : "");
+      dprintf(idx, _("    Filesystem module loaded, but no active dcc path "
+              "exists.\n"));
+    dprintf(idx, _("    Using %d bytes of memory\n"), size);
   }
 }
 
@@ -975,13 +994,13 @@
   int i;
   p_tcl_bind_list H_ctcp;
 
-  putlog(LOG_MISC, "*", "Unloading filesystem; killing all filesystem "
-         "connections.");
+  putlog(LOG_MISC, "*", _("Unloading filesystem; killing all filesystem "
+         "connections."));
   for (i = 0; i < dcc_total; i++)
     if (dcc[i].type == &DCC_FILES) {
       dprintf(i, DCC_BOOTED1);
-      dprintf(i, "You have been booted from the filesystem, module "
-              "unloaded.\n");
+      dprintf(i, _("You have been booted from the filesystem, module "
+              "unloaded.\n"));
       killsock(dcc[i].sock);
       lostdcc(i);
     } else if (dcc[i].type == &DCC_FILES_PASS) {
@@ -1028,11 +1047,11 @@
   module_register(MODULE_NAME, filesys_table, 2, 1);
   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.");
   }
   if (!(transfer_funcs = module_depend(MODULE_NAME, "transfer", 2, 0))) {
     module_undepend(MODULE_NAME);
-    return "This module requires transfer module 2.0 or later.";
+    return _("This module requires transfer module 2.0 or later.");
   }
   add_tcl_commands(mytcls);
   add_tcl_strings(mystrings);
Index: eggdrop1.8/src/mod/irc.mod/chan.c
diff -u eggdrop1.8/src/mod/irc.mod/chan.c:1.2 eggdrop1.8/src/mod/irc.mod/chan.c:1.2.2.1
--- eggdrop1.8/src/mod/irc.mod/chan.c:1.2	Sun Oct 24 07:22:40 2010
+++ eggdrop1.8/src/mod/irc.mod/chan.c	Tue Nov 16 08:16:57 2010
@@ -6,7 +6,7 @@
  *   user kickban, kick, op, deop
  *   idle kicking
  *
- * $Id: chan.c,v 1.2 2010/10/24 13:22:40 pseudo Exp $
+ * $Id: chan.c,v 1.2.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -301,8 +301,9 @@
       /* Flooding chan! either by public or notice */
       if (!chan_sentkick(m) &&
           (me_op(chan) || (me_halfop(chan) && !chan_hasop(m)))) {
-        putlog(LOG_MODES, chan->dname, IRC_FLOODKICK, floodnick);
-        dprintf(DP_MODE, "KICK %s %s :%s\n", chan->name, floodnick, CHAN_FLOOD);
+        putlog(LOG_MODES, chan->dname, _("Channel flood from %s -- kicking"),
+               floodnick);
+        dprintf(DP_MODE, "KICK %s %s :%s\n", chan->name, floodnick, _("flood"));
         m->flags |= SENTKICK;
       }
       return 1;
@@ -336,10 +337,10 @@
             m->flags |= SENTKICK;
             if (which == FLOOD_JOIN)
               dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick,
-                      IRC_JOIN_FLOOD);
+                      _("join flood"));
             else
               dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick,
-                      IRC_NICK_FLOOD);
+                      _("nick flood"));
           }
         }
       }
@@ -349,16 +350,17 @@
           !chan_sentkick(m)) {
         putlog(LOG_MODES, chan->dname, "Kicking %s, for mass kick.", floodnick);
         dprintf(DP_MODE, "KICK %s %s :%s\n", chan->name, floodnick,
-                IRC_MASSKICK);
+                _("mass kick, go sit in a corner"));
         m->flags |= SENTKICK;
       }
       return 1;
     case FLOOD_DEOP:
       if ((me_op(chan) || (me_halfop(chan) && !chan_hasop(m))) &&
           !chan_sentkick(m)) {
-        putlog(LOG_MODES, chan->dname, CHAN_MASSDEOP, chan->dname, from);
+        putlog(LOG_MODES, chan->dname, _("Mass deop on %s by %s"), chan->dname,
+               from);
         dprintf(DP_MODE, "KICK %s %s :%s\n",
-                chan->name, floodnick, CHAN_MASSDEOP_KICK);
+                chan->name, floodnick, _("Mass deop. Go sit in a corner."));
         m->flags |= SENTKICK;
       }
       return 1;
@@ -456,10 +458,10 @@
           do_mask(chan, chan->channel.ban, b->mask, 'b');
           b->lastactive = now;
           if (b->desc && b->desc[0] != '@')
-            egg_snprintf(c, sizeof c, "%s %s", IRC_PREBANNED, b->desc);
+            egg_snprintf(c, sizeof c, "%s %s", _("Banned:"), b->desc);
           else
             c[0] = 0;
-          kick_all(chan, b->mask, c[0] ? c : IRC_YOUREBANNED, 0);
+          kick_all(chan, b->mask, c[0] ? c : _("You are banned"), 0);
           return;               /* Drop out on 1st ban. */
         }
       }
@@ -528,7 +530,7 @@
   for (b = chan->channel.ban; b && b->mask[0]; b = b->next) {
     if (!match_addr(b->mask, me))
       if (!isexempted(chan, b->mask))
-        kick_all(chan, b->mask, IRC_YOUREBANNED, 1);
+        kick_all(chan, b->mask, _("You are banned"), 1);
   }
 }
 
@@ -631,7 +633,7 @@
     recheck_invites(chan);
     break;
   default:
-    putlog(LOG_MISC, "*", "(!) Invalid mode '%c' in resetmasks()", mode);
+    putlog(LOG_MISC, "*", _("(!) Invalid mode '%c' in resetmasks()"), mode);
     break;
   }
 }
@@ -836,7 +838,7 @@
       quickban(chan, m->userhost);
       p = get_user(&USERENTRY_COMMENT, m->user);
       dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick,
-              p ? p : IRC_POLITEKICK);
+              p ? p : _("...and thank you for playing."));
       m->flags |= SENTKICK;
     }
   }
@@ -938,7 +940,8 @@
   chname = newsplit(&msg);
   chan = findchan(chname);
   if (!chan) {
-    putlog(LOG_MISC, "*", "%s: %s", IRC_UNEXPECTEDMODE, chname);
+    putlog(LOG_MISC, "*", "%s: %s", _("Hmm  mode info from a channel "
+           "I'm not on"), chname);
     dprintf(DP_SERVER, "PART %s\n", chname);
     return 0;
   }
@@ -1304,7 +1307,7 @@
 
   newsplit(&msg);
   chname = newsplit(&msg);
-  putlog(LOG_MISC, "*", IRC_TOOMANYCHANS, chname);
+  putlog(LOG_MISC, "*", _("I'm on too many channels--can't join: %s"), chname);
   return 0;
 }
 
@@ -1332,15 +1335,15 @@
        * channel using it's short name.
        */
       putlog(LOG_MISC, "*",
-             "Unique channel %s does not exist... Attempting to join with "
-             "short name.", chname);
+             _("Unique channel %s does not exist... Attempting to join with "
+             "short name."), chname);
       dprintf(DP_SERVER, "JOIN %s\n", chan->dname);
     } else {
       /* We have found the channel, so the server has given us the short
        * name. Prefix another '!' to it, and attempt the join again...
        */
       putlog(LOG_MISC, "*",
-             "Channel %s does not exist... Attempting to create it.", chname);
+             _("Channel %s does not exist... Attempting to create it."), chname);
       dprintf(DP_SERVER, "JOIN !%s\n", chan->dname);
     }
   }
@@ -1368,7 +1371,8 @@
    */
   chan = findchan_by_dname(chname);
   if (chan) {
-    putlog(LOG_JOIN, chan->dname, IRC_CHANFULL, chan->dname);
+    putlog(LOG_JOIN, chan->dname, _("Channel full--can't join: %s"),
+           chan->dname);
     check_tcl_need(chan->dname, "limit");
 
     chan = findchan_by_dname(chname);
@@ -1378,7 +1382,7 @@
     if (chan->need_limit[0])
       do_tcl("need-limit", chan->need_limit);
   } else
-    putlog(LOG_JOIN, chname, IRC_CHANFULL, chname);
+    putlog(LOG_JOIN, chname, _("Channel full--can't join: %s"), chname);
   return 0;
 }
 
@@ -1403,7 +1407,8 @@
    */
   chan = findchan_by_dname(chname);
   if (chan) {
-    putlog(LOG_JOIN, chan->dname, IRC_CHANINVITEONLY, chan->dname);
+    putlog(LOG_JOIN, chan->dname, _("Channel invite only--can't join: %s"),
+           chan->dname);
     check_tcl_need(chan->dname, "invite");
 
     chan = findchan_by_dname(chname);
@@ -1413,7 +1418,7 @@
     if (chan->need_invite[0])
       do_tcl("need-invite", chan->need_invite);
   } else
-    putlog(LOG_JOIN, chname, IRC_CHANINVITEONLY, chname);
+    putlog(LOG_JOIN, chname, _("Channel invite only--can't join: %s"), chname);
   return 0;
 }
 
@@ -1438,7 +1443,8 @@
    */
   chan = findchan_by_dname(chname);
   if (chan) {
-    putlog(LOG_JOIN, chan->dname, IRC_BANNEDFROMCHAN, chan->dname);
+    putlog(LOG_JOIN, chan->dname, _("Banned from channel--can't join: %s"),
+           chan->dname);
     check_tcl_need(chan->dname, "unban");
 
     chan = findchan_by_dname(chname);
@@ -1448,7 +1454,7 @@
     if (chan->need_unban[0])
       do_tcl("need-unban", chan->need_unban);
   } else
-    putlog(LOG_JOIN, chname, IRC_BANNEDFROMCHAN, chname);
+    putlog(LOG_JOIN, chname, _("Banned from channel--can't join: %s"), chname);
   return 0;
 }
 
@@ -1473,7 +1479,7 @@
    */
   chan = findchan_by_dname(chname);
   if (chan) {
-    putlog(LOG_JOIN, chan->dname, IRC_BADCHANKEY, chan->dname);
+    putlog(LOG_JOIN, chan->dname, _("Bad key--can't join: %s"), chan->dname);
     if (chan->channel.key[0]) {
       nfree(chan->channel.key);
       chan->channel.key = (char *) channel_malloc(1);
@@ -1494,7 +1500,7 @@
         do_tcl("need-key", chan->need_key);
     }
   } else
-    putlog(LOG_JOIN, chname, IRC_BADCHANKEY, chname);
+    putlog(LOG_JOIN, chname, _("Bad key--can't join: %s"), chname);
   return 0;
 }
 
@@ -1511,7 +1517,7 @@
   if (!rfc_casecmp(last_invchan, msg))
     if (now - last_invtime < 30)
       return 0; /* Two invites to the same channel in 30 seconds? */
-  putlog(LOG_MISC, "*", "%s!%s invited me to %s", nick, from, msg);
+  putlog(LOG_MISC, "*", _("%s!%s invited me to %s"), nick, from, msg);
   strncpy(last_invchan, msg, 299);
   last_invchan[299] = 0;
   last_invtime = now;
@@ -1521,7 +1527,7 @@
     chan = findchan_by_dname(msg);
 
   if (chan && (channel_pending(chan) || channel_active(chan)))
-    dprintf(DP_HELP, "NOTICE %s :I'm already here.\n", nick);
+    dprintf(DP_HELP, _("NOTICE %s :I'm already here.\n"), nick);
   else if (chan && !channel_inactive(chan)) {
 
     key = chan->channel.key[0] ? chan->channel.key : chan->key_prot;
@@ -1563,7 +1569,7 @@
   nick = splitnick(&from);
   chan = findchan(chname);
   if (chan) {
-    putlog(LOG_JOIN, chan->dname, "Topic changed on %s by %s!%s: %s",
+    putlog(LOG_JOIN, chan->dname, _("Topic changed on %s by %s!%s: %s"),
            chan->dname, nick, from, msg);
     m = ismember(chan, nick);
     if (m != NULL)
@@ -1703,8 +1709,8 @@
              * the incident.
              */
             chan->status |= CHAN_INACTIVE;
-            putlog(LOG_MISC, "*", "Deactivated channel %s, because it uses "
-                   "an ID channel-name. Use the descriptive name instead.",
+            putlog(LOG_MISC, "*", _("Deactivated channel %s, because it uses "
+                   "an ID channel-name. Use the descriptive name instead."),
                    chname);
             dprintf(DP_SERVER, "PART %s\n", chname);
             goto exit;
@@ -1723,7 +1729,7 @@
     strcpy(uhost, from);
     nick = splitnick(&uhost);
     if (match_my_nick(nick)) {
-      putlog(LOG_MISC, "*", "joined %s but didn't want to!", chname);
+      putlog(LOG_MISC, "*", _("joined %s but didn't want to!"), chname);
       dprintf(DP_MODE, "PART %s\n", chname);
     }
   } else if (!channel_pending(chan)) {
@@ -1749,7 +1755,7 @@
     if (!channel_active(chan) && !match_my_nick(nick)) {
       /* uh, what?!  i'm on the channel?! */
       putlog(LOG_MISC, chan->dname,
-             "confused bot: guess I'm on %s and didn't realize it",
+             _("confused bot: guess I'm on %s and didn't realize it"),
              chan->dname);
       chan->status |= CHAN_ACTIVE;
       chan->status &= ~CHAN_PEND;
@@ -1779,7 +1785,7 @@
         m->user = u;
         set_handle_laston(chan->dname, u, now);
         m->flags |= STOPWHO;
-        putlog(LOG_JOIN, chan->dname, "%s (%s) returned to %s.", nick, uhost,
+        putlog(LOG_JOIN, chan->dname, _("%s (%s) returned to %s."), nick, uhost,
                chan->dname);
       } else {
         if (m)
@@ -1829,17 +1835,17 @@
            * logs with the unique name.
            */
           if (chname[0] == '!')
-            putlog(LOG_JOIN | LOG_MISC, chan->dname, "%s joined %s (%s)",
+            putlog(LOG_JOIN | LOG_MISC, chan->dname, _("%s joined %s (%s)"),
                    nick, chan->dname, chname);
           else
-            putlog(LOG_JOIN | LOG_MISC, chan->dname, "%s joined %s.", nick,
+            putlog(LOG_JOIN | LOG_MISC, chan->dname, _("%s joined %s."), nick,
                    chname);
           reset_chan_info(chan, (CHAN_RESETALL & ~CHAN_RESETTOPIC));
         } else {
           struct chanuserrec *cr;
 
           putlog(LOG_JOIN, chan->dname,
-                 "%s (%s) joined %s.", nick, uhost, chan->dname);
+                 _("%s (%s) joined %s."), nick, uhost, chan->dname);
           /* Don't re-display greeting if they've been on the channel
            * recently.
            */
@@ -1893,7 +1899,7 @@
             for (b = chan->channel.ban; b->mask[0]; b = b->next) {
               if (match_addr(b->mask, from)) {
                 dprintf(DP_SERVER, "KICK %s %s :%s\n", chname, m->nick,
-                        IRC_YOUREBANNED);
+                        _("You are banned"));
                 m->flags |= SENTKICK;
                 goto exit;
               }
@@ -1908,7 +1914,7 @@
             quickban(chan, from);
             p = get_user(&USERENTRY_COMMENT, m->user);
             dprintf(DP_MODE, "KICK %s %s :%s\n", chname, nick,
-                    (p && (p[0] != '@')) ? p : IRC_COMMENTKICK);
+                    (p && (p[0] != '@')) ? p : _("...and don't come back."));
             m->flags |= SENTKICK;
           }
         }
@@ -1982,7 +1988,7 @@
     if (!channel_active(chan)) {
       /* whoa! */
       putlog(LOG_MISC, chan->dname,
-             "confused bot: guess I'm on %s and didn't realize it",
+             _("confused bot: guess I'm on %s and didn't realize it"),
              chan->dname);
       chan->status |= CHAN_ACTIVE;
       chan->status &= ~CHAN_PEND;
@@ -1999,10 +2005,10 @@
 
     killmember(chan, nick);
     if (msg[0])
-      putlog(LOG_JOIN, chan->dname, "%s (%s) left %s (%s).", nick, from,
+      putlog(LOG_JOIN, chan->dname, _("%s (%s) left %s (%s)."), nick, from,
              chan->dname, msg);
     else
-      putlog(LOG_JOIN, chan->dname, "%s (%s) left %s.", nick, from,
+      putlog(LOG_JOIN, chan->dname, _("%s (%s) left %s."), nick, from,
              chan->dname);
     /* If it was me, all hell breaks loose... */
     if (match_my_nick(nick)) {
@@ -2089,7 +2095,7 @@
       set_handle_laston(chan->dname, u2, now);
       maybe_revenge(chan, from, s1, REVENGE_KICK);
     }
-    putlog(LOG_MODES, chan->dname, "%s kicked from %s by %s: %s", s1,
+    putlog(LOG_MODES, chan->dname, _("%s kicked from %s by %s: %s"), s1,
            chan->dname, from, msg);
     /* Kicked ME?!? the sods! */
     if (match_my_nick(nick) && !channel_inactive(chan)) {
@@ -2131,7 +2137,7 @@
     chname = chan->dname;
     m = ismember(chan, nick);
     if (m) {
-      putlog(LOG_JOIN, chan->dname, "Nick change: %s -> %s", nick, msg);
+      putlog(LOG_JOIN, chan->dname, _("Nick change: %s -> %s"), nick, msg);
       m->last = now;
       if (rfc_casecmp(nick, msg)) {
         /* Not just a capitalization change */
@@ -2140,10 +2146,10 @@
           /* Someone on channel with old nick?! */
           if (mm->split)
             putlog(LOG_JOIN, chan->dname,
-                   "Possible future nick collision: %s", mm->nick);
+                   _("Possible future nick collision: %s"), mm->nick);
           else
             putlog(LOG_MISC, chan->dname,
-                   "* Bug: nick change to existing nick");
+                   _("* Bug: nick change to existing nick"));
           killmember(chan, mm->nick);
         }
       }
@@ -2248,7 +2254,7 @@
           chan = oldchan;
           continue;
         }
-        putlog(LOG_JOIN, chan->dname, "%s (%s) got netsplit.", nick, from);
+        putlog(LOG_JOIN, chan->dname, _("%s (%s) got netsplit."), nick, from);
       } else {
         check_tcl_sign(nick, from, u, chan->dname, msg);
 
@@ -2256,7 +2262,7 @@
           chan = oldchan;
           continue;
         }
-        putlog(LOG_JOIN, chan->dname, "%s (%s) left irc: %s", nick, from, msg);
+        putlog(LOG_JOIN, chan->dname, _("%s (%s) left irc: %s"), nick, from, msg);
         killmember(chan, nick);
         check_lonely_channel(chan);
       }
@@ -2268,11 +2274,11 @@
   if (keepnick) {
     alt = get_altbotnick();
     if (!rfc_casecmp(nick, origbotname)) {
-      putlog(LOG_MISC, "*", IRC_GETORIGNICK, origbotname);
+      putlog(LOG_MISC, "*", _("Switching back to nick %s"), origbotname);
       dprintf(DP_SERVER, "NICK %s\n", origbotname);
     } else if (alt[0]) {
       if (!rfc_casecmp(nick, alt) && strcmp(botname, origbotname)) {
-        putlog(LOG_MISC, "*", IRC_GETALTNICK, alt);
+        putlog(LOG_MISC, "*", _("Switching back to altnick %s"), alt);
         dprintf(DP_SERVER, "NICK %s\n", alt);
       }
     }
@@ -2344,10 +2350,10 @@
             if (!ignoring) {
               /* Log DCC, it's to a channel damnit! */
               if (!strcmp(code, "ACTION")) {
-                putlog(LOG_PUBLIC, chan->dname, "Action: %s %s", nick, ctcp);
+                putlog(LOG_PUBLIC, chan->dname, _("Action: %s %s"), nick, ctcp);
               } else {
                 putlog(LOG_PUBLIC, chan->dname,
-                       "CTCP %s: %s from %s (%s) to %s", code, ctcp, nick,
+                       _("CTCP %s: %s from %s (%s) to %s"), code, ctcp, nick,
                        from, to);
               }
             }
@@ -2458,7 +2464,7 @@
 
           if (!ignoring) {
             putlog(LOG_PUBLIC, chan->dname,
-                   "CTCP reply %s: %s from %s (%s) to %s", code, msg, nick,
+                   _("CTCP reply %s: %s from %s (%s) to %s"), code, msg, nick,
                    from, chan->dname);
             update_idle(chan->dname, nick);
           }
Index: eggdrop1.8/src/mod/irc.mod/cmdsirc.c
diff -u eggdrop1.8/src/mod/irc.mod/cmdsirc.c:1.1.1.1 eggdrop1.8/src/mod/irc.mod/cmdsirc.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/irc.mod/cmdsirc.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/irc.mod/cmdsirc.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * chancmds.c -- part of irc.mod
  *   handles commands directly relating to channel interaction
  *
- * $Id: cmdsirc.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: cmdsirc.c,v 1.1.1.1.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -32,14 +32,14 @@
     if (chan)
       return chan;
     else
-      dprintf(idx, "No such channel.\n");
+      dprintf(idx, _("No such channel.\n"));
   } else {
     chname = dcc[idx].u.chat->con_chan;
     chan = findchan_by_dname(chname);
     if (chan)
       return chan;
     else
-      dprintf(idx, "Invalid console channel.\n");
+      dprintf(idx, _("Invalid console channel.\n"));
   }
   return 0;
 }
@@ -51,7 +51,7 @@
   get_user_flagrec(dcc[idx].user, &user, chan->dname);
   if (chan_op(user) || (glob_op(user) && !chan_deop(user)))
     return 1;
-  dprintf(idx, "You are not a channel op on %s.\n", chan->dname);
+  dprintf(idx, _("You are not a channel op on %s.\n"), chan->dname);
   return 0;
 }
 
@@ -61,7 +61,7 @@
   if (chan_op(user) || chan_halfop(user) || (glob_op(user) &&
       !chan_deop(user)) || (glob_halfop(user) && !chan_dehalfop(user)))
     return 1;
-  dprintf(idx, "You are not a channel op or halfop on %s.\n", chan->dname);
+  dprintf(idx, _("You are not a channel op or halfop on %s.\n"), chan->dname);
   return 0;
 }
 
@@ -89,7 +89,7 @@
   memberlist *m;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: act [channel] <action>\n");
+    dprintf(idx, _("Usage: act [channel] <action>\n"));
     return;
   }
   if (strchr(CHANMETA, par[0]) != NULL)
@@ -101,17 +101,17 @@
     return;
   m = ismember(chan, botname);
   if (!m) {
-    dprintf(idx, "Cannot say to %s: I'm not on that channel.\n", chan->dname);
+    dprintf(idx, _("Cannot say to %s: I'm not on that channel.\n"), chan->dname);
     return;
   }
   if ((chan->channel.mode & CHANMODER) && !me_op(chan) && !me_halfop(chan) &&
       !me_voice(chan)) {
-    dprintf(idx, "Cannot say to %s: It is moderated.\n", chan->dname);
+    dprintf(idx, _("Cannot say to %s: It is moderated.\n"), chan->dname);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# (%s) act %s", dcc[idx].nick, chan->dname, par);
   dprintf(DP_HELP, "PRIVMSG %s :\001ACTION %s\001\n", chan->name, par);
-  dprintf(idx, "Action to %s: %s\n", chan->dname, par);
+  dprintf(idx, _("Action to %s: %s\n"), chan->dname, par);
 }
 
 static void cmd_msg(struct userrec *u, int idx, char *par)
@@ -120,11 +120,11 @@
 
   nick = newsplit(&par);
   if (!par[0])
-    dprintf(idx, "Usage: msg <nick> <message>\n");
+    dprintf(idx, _("Usage: msg <nick> <message>\n"));
   else {
     putlog(LOG_CMDS, "*", "#%s# msg %s %s", dcc[idx].nick, nick, par);
     dprintf(DP_HELP, "PRIVMSG %s :%s\n", nick, par);
-    dprintf(idx, "Msg to %s: %s\n", nick, par);
+    dprintf(idx, _("Msg to %s: %s\n"), nick, par);
   }
 }
 
@@ -135,7 +135,7 @@
   memberlist *m;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: say [channel] <message>\n");
+    dprintf(idx, _("Usage: say [channel] <message>\n"));
     return;
   }
   if (strchr(CHANMETA, par[0]) != NULL)
@@ -147,17 +147,18 @@
     return;
   m = ismember(chan, botname);
   if (!m) {
-    dprintf(idx, "Cannot say to %s: I'm not on that channel.\n", chan->dname);
+    dprintf(idx, _("Cannot say to %s: I'm not on that channel.\n"),
+            chan->dname);
     return;
   }
   if ((chan->channel.mode & CHANMODER) && !me_op(chan) && !me_halfop(chan) &&
       !me_voice(chan)) {
-    dprintf(idx, "Cannot say to %s: It is moderated.\n", chan->dname);
+    dprintf(idx, _("Cannot say to %s: It is moderated.\n"), chan->dname);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# (%s) say %s", dcc[idx].nick, chan->dname, par);
   dprintf(DP_HELP, "PRIVMSG %s :%s\n", chan->name, par);
-  dprintf(idx, "Said to %s: %s\n", chan->dname, par);
+  dprintf(idx, _("Said to %s: %s\n"), chan->dname, par);
 }
 
 static void cmd_kickban(struct userrec *u, int idx, char *par)
@@ -169,7 +170,7 @@
   char bantype = 0;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: kickban [channel] [-|@]<nick> [reason]\n");
+    dprintf(idx, _("Usage: kickban [channel] [-|@]<nick> [reason]\n"));
     return;
   }
 
@@ -181,12 +182,12 @@
   if (!chan || !has_oporhalfop(idx, chan))
     return;
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
   if (HALFOP_CANTDOMODE('b')) {
-    dprintf(idx, "I can't help you now because I'm not a channel op or halfop "
-            "on %s, or halfops cannot set bans.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a channel op "
+            "or halfop on %s, or halfops cannot set bans.\n"), chan->dname);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# (%s) kickban %s", dcc[idx].nick,
@@ -197,16 +198,16 @@
     nick++;
   }
   if (match_my_nick(nick)) {
-    dprintf(idx, "I'm not going to kickban myself.\n");
+    dprintf(idx, _("I'm not going to kickban myself.\n"));
     return;
   }
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s\n"), nick, chan->dname);
     return;
   }
   if (!me_op(chan) && chan_hasop(m)) {
-    dprintf(idx, "I can't help you now because halfops cannot kick ops.\n");
+    dprintf(idx, _("I can't help you now because halfops cannot kick ops.\n"));
     return;
   }
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
@@ -219,16 +220,16 @@
   }
   if ((chan_master(victim) || glob_master(victim)) &&
       !(glob_owner(user) || chan_owner(user))) {
-    dprintf(idx, "%s is a %s master.\n", nick, chan->dname);
+    dprintf(idx, _("%s is a %s master.\n"), nick, chan->dname);
     return;
   }
   if (glob_bot(victim) && !(glob_owner(user) || chan_owner(user))) {
-    dprintf(idx, "%s is another channel bot!\n", nick);
+    dprintf(idx, _("%s is another channel bot!\n"), nick);
     return;
   }
   if (use_exempts && (u_match_mask(global_exempts, s) ||
       u_match_mask(chan->exempts, s))) {
-    dprintf(idx, "%s is permanently exempted!\n", nick);
+    dprintf(idx, _("%s is permanently exempted!\n"), nick);
     return;
   }
   if (m->flags & CHANOP)
@@ -255,11 +256,11 @@
   if (bantype == '@' || bantype == '-')
     do_mask(chan, chan->channel.ban, s1, 'b');
   if (!par[0])
-    par = "requested";
+    par = _("requested");
   dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick, par);
   m->flags |= SENTKICK;
   u_addban(chan, s1, dcc[idx].nick, par, now + (60 * chan->ban_time), 0);
-  dprintf(idx, "Okay, done.\n");
+  dprintf(idx, _("Okay, done.\n"));
 }
 
 static void cmd_op(struct userrec *u, int idx, char *par)
@@ -275,41 +276,41 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: op <nick> [channel]\n");
+    dprintf(idx, _("Usage: op <nick> [channel]\n"));
     return;
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('o')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set +o modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set +o modes.\n"), chan->dname);
     return;
   }
 
   putlog(LOG_CMDS, "*", "#%s# (%s) op %s", dcc[idx].nick, chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
   u = get_user_by_host(s);
   get_user_flagrec(u, &victim, chan->dname);
   if (chan_deop(victim) || (glob_deop(victim) && !glob_op(victim))) {
-    dprintf(idx, "%s is currently being auto-deopped.\n", m->nick);
+    dprintf(idx, _("%s is currently being auto-deopped.\n"), m->nick);
     return;
   }
   if (channel_bitch(chan) && !(chan_op(victim) || (glob_op(victim) &&
       !chan_deop(victim)))) {
-    dprintf(idx, "%s is not a registered op.\n", m->nick);
+    dprintf(idx, _("%s is not a registered op.\n"), m->nick);
     return;
   }
   add_mode(chan, '+', 'o', nick);
-  dprintf(idx, "Gave op to %s on %s.\n", nick, chan->dname);
+  dprintf(idx, _("Gave op to %s on %s.\n"), nick, chan->dname);
 }
 
 static void cmd_deop(struct userrec *u, int idx, char *par)
@@ -325,29 +326,29 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: deop <nick> [channel]\n");
+    dprintf(idx, _("Usage: deop <nick> [channel]\n"));
     return;
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('o')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set -o modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set -o modes.\n"), chan->dname);
     return;
   }
 
   putlog(LOG_CMDS, "*", "#%s# (%s) deop %s", dcc[idx].nick, chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   if (match_my_nick(nick)) {
-    dprintf(idx, "I'm not going to deop myself.\n");
+    dprintf(idx, _("I'm not going to deop myself.\n"));
     return;
   }
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
@@ -355,16 +356,16 @@
   get_user_flagrec(u, &victim, chan->dname);
   if ((chan_master(victim) || glob_master(victim)) &&
       !(chan_owner(user) || glob_owner(user))) {
-    dprintf(idx, "%s is a master for %s.\n", m->nick, chan->dname);
+    dprintf(idx, _("%s is a master for %s.\n"), m->nick, chan->dname);
     return;
   }
   if ((chan_op(victim) || (glob_op(victim) && !chan_deop(victim))) &&
       !(chan_master(user) || glob_master(user))) {
-    dprintf(idx, "%s has the op flag for %s.\n", m->nick, chan->dname);
+    dprintf(idx, _("%s has the op flag for %s.\n"), m->nick, chan->dname);
     return;
   }
   add_mode(chan, '-', 'o', nick);
-  dprintf(idx, "Took op from %s on %s.\n", nick, chan->dname);
+  dprintf(idx, _("Took op from %s on %s.\n"), nick, chan->dname);
 }
 
 static void cmd_halfop(struct userrec *u, int idx, char *par)
@@ -381,7 +382,7 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: halfop <nick> [channel]\n");
+    dprintf(idx, _("Usage: halfop <nick> [channel]\n"));
     return;
   }
 
@@ -393,19 +394,19 @@
 
     if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) &&
         (!glob_halfop(user) || chan_dehalfop(user)))) {
-      dprintf(idx, "You are not a channel op on %s.\n", chan->dname);
+      dprintf(idx, _("You are not a channel op on %s.\n"), chan->dname);
       return;
     }
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('h')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set +h modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set +h modes.\n"), chan->dname);
     return;
   }
 
@@ -413,24 +414,24 @@
          chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
   u = get_user_by_host(s);
   get_user_flagrec(u, &victim, chan->dname);
   if (chan_dehalfop(victim) || (glob_dehalfop(victim) && !glob_halfop(victim))) {
-    dprintf(idx, "%s is currently being auto-dehalfopped.\n", m->nick);
+    dprintf(idx, _("%s is currently being auto-dehalfopped.\n"), m->nick);
     return;
   }
   if (channel_bitch(chan) && !(chan_op(victim) || chan_op(victim) ||
       (glob_op(victim) && !chan_deop(victim)) || (glob_halfop(victim) &&
       !chan_dehalfop(victim)))) {
-    dprintf(idx, "%s is not a registered halfop.\n", m->nick);
+    dprintf(idx, _("%s is not a registered halfop.\n"), m->nick);
     return;
   }
   add_mode(chan, '+', 'h', nick);
-  dprintf(idx, "Gave halfop to %s on %s.\n", nick, chan->dname);
+  dprintf(idx, _("Gave halfop to %s on %s.\n"), nick, chan->dname);
 }
 
 static void cmd_dehalfop(struct userrec *u, int idx, char *par)
@@ -447,7 +448,7 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: dehalfop <nick> [channel]\n");
+    dprintf(idx, _("Usage: dehalfop <nick> [channel]\n"));
     return;
   }
 
@@ -459,19 +460,19 @@
 
     if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) &&
         (!glob_halfop(user) || chan_dehalfop(user)))) {
-      dprintf(idx, "You are not a channel op on %s.\n", chan->dname);
+      dprintf(idx, _("You are not a channel op on %s.\n"), chan->dname);
       return;
     }
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('h')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set -h modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set -h modes.\n"), chan->dname);
     return;
   }
 
@@ -479,11 +480,11 @@
          chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   if (match_my_nick(nick)) {
-    dprintf(idx, "I'm not going to dehalfop myself.\n");
+    dprintf(idx, _("I'm not going to dehalfop myself.\n"));
     return;
   }
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
@@ -491,12 +492,12 @@
   get_user_flagrec(u, &victim, chan->dname);
   if ((chan_master(victim) || glob_master(victim)) &&
       !(chan_owner(user) || glob_owner(user))) {
-    dprintf(idx, "%s is a master for %s.\n", m->nick, chan->dname);
+    dprintf(idx, _("%s is a master for %s.\n"), m->nick, chan->dname);
     return;
   }
   if ((chan_op(victim) || (glob_op(victim) && !chan_deop(victim))) &&
       !(chan_master(user) || glob_master(user))) {
-    dprintf(idx, "%s has the op flag for %s.\n", m->nick, chan->dname);
+    dprintf(idx, _("%s has the op flag for %s.\n"), m->nick, chan->dname);
     return;
   }
   if ((chan_halfop(victim) || (glob_halfop(victim) &&
@@ -505,7 +506,7 @@
     return;
   }
   add_mode(chan, '-', 'h', nick);
-  dprintf(idx, "Took halfop from %s on %s.\n", nick, chan->dname);
+  dprintf(idx, _("Took halfop from %s on %s.\n"), nick, chan->dname);
 }
 
 static void cmd_voice(struct userrec *u, int idx, char *par)
@@ -522,7 +523,7 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: voice <nick> [channel]\n");
+    dprintf(idx, _("Usage: voice <nick> [channel]\n"));
     return;
   }
 
@@ -540,30 +541,31 @@
 
     if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) &&
         (!glob_voice(user) || chan_quiet(user)))) {
-      dprintf(idx, "You are not a channel op or halfop on %s.\n", chan->dname);
+      dprintf(idx, _("You are not a channel op or halfop on %s.\n"),
+              chan->dname);
       return;
     }
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('v')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set +v modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set +v modes.\n"), chan->dname);
     return;
   }
 
   putlog(LOG_CMDS, "*", "#%s# (%s) voice %s", dcc[idx].nick, chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   add_mode(chan, '+', 'v', nick);
-  dprintf(idx, "Gave voice to %s on %s\n", nick, chan->dname);
+  dprintf(idx, _("Gave voice to %s on %s\n"), nick, chan->dname);
 }
 
 static void cmd_devoice(struct userrec *u, int idx, char *par)
@@ -580,7 +582,7 @@
     return;
 
   if (!nick[0] && !(nick = getnick(u->handle, chan))) {
-    dprintf(idx, "Usage: devoice <nick> [channel]\n");
+    dprintf(idx, _("Usage: devoice <nick> [channel]\n"));
     return;
   }
 
@@ -593,19 +595,19 @@
 
     if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) &&
         (!glob_voice(user) || chan_quiet(user)))) {
-      dprintf(idx, "You are not a channel op or halfop on %s.\n", chan->dname);
+      dprintf(idx, _("You are not a channel op or halfop on %s.\n"), chan->dname);
       return;
     }
   }
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
 
   if (HALFOP_CANTDOMODE('v')) {
-    dprintf(idx, "I can't help you now because I'm not a chan op or halfop on "
-            "%s, or halfops cannot set -v modes.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a chan op or halfop "
+            "on %s, or halfops cannot set -v modes.\n"), chan->dname);
     return;
   }
 
@@ -613,11 +615,11 @@
          chan->dname, nick);
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s.\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s.\n"), nick, chan->dname);
     return;
   }
   add_mode(chan, '-', 'v', nick);
-  dprintf(idx, "Devoiced %s on %s\n", nick, chan->dname);
+  dprintf(idx, _("Devoiced %s on %s\n"), nick, chan->dname);
 }
 
 static void cmd_kick(struct userrec *u, int idx, char *par)
@@ -628,7 +630,7 @@
   char s[UHOSTLEN];
 
   if (!par[0]) {
-    dprintf(idx, "Usage: kick [channel] <nick> [reason]\n");
+    dprintf(idx, _("Usage: kick [channel] <nick> [reason]\n"));
     return;
   }
   if (strchr(CHANMETA, par[0]) != NULL)
@@ -639,29 +641,29 @@
   if (!chan || !has_oporhalfop(idx, chan))
     return;
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
   if (!me_op(chan) && !me_halfop(chan)) {
-    dprintf(idx, "I can't help you now because I'm not a channel op or halfop "
-            "on %s.\n", chan->dname);
+    dprintf(idx, _("I can't help you now because I'm not a channel op or "
+            "halfop on %s.\n"), chan->dname);
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# (%s) kick %s", dcc[idx].nick, chan->dname, par);
   nick = newsplit(&par);
   if (!par[0])
-    par = "request";
+    par = _("request");
   if (match_my_nick(nick)) {
-    dprintf(idx, "I'm not going to kick myself.\n");
+    dprintf(idx, _("I'm not going to kick myself.\n"));
     return;
   }
   m = ismember(chan, nick);
   if (!m) {
-    dprintf(idx, "%s is not on %s\n", nick, chan->dname);
+    dprintf(idx, _("%s is not on %s\n"), nick, chan->dname);
     return;
   }
   if (!me_op(chan) && chan_hasop(m)) {
-    dprintf(idx, "I can't help you now because halfops cannot kick ops.\n",
+    dprintf(idx, _("I can't help you now because halfops cannot kick ops.\n"),
             chan->dname);
     return;
   }
@@ -670,21 +672,21 @@
   get_user_flagrec(u, &victim, chan->dname);
   if ((chan_op(victim) || (glob_op(victim) && !chan_deop(victim))) &&
       !(chan_master(user) || glob_master(user))) {
-    dprintf(idx, "%s is a legal op.\n", nick);
+    dprintf(idx, _("%s is a legal op.\n"), nick);
     return;
   }
   if ((chan_master(victim) || glob_master(victim)) &&
       !(glob_owner(user) || chan_owner(user))) {
-    dprintf(idx, "%s is a %s master.\n", nick, chan->dname);
+    dprintf(idx, _("%s is a %s master.\n"), nick, chan->dname);
     return;
   }
   if (glob_bot(victim) && !(glob_owner(user) || chan_owner(user))) {
-    dprintf(idx, "%s is another channel bot!\n", nick);
+    dprintf(idx, _("%s is another channel bot!\n"), nick);
     return;
   }
   dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick, par);
   m->flags |= SENTKICK;
-  dprintf(idx, "Okay, done.\n");
+  dprintf(idx, _("Okay, done.\n"));
 }
 
 static void cmd_invite(struct userrec *u, int idx, char *par)
@@ -704,22 +706,22 @@
          nick);
   if (!me_op(chan) && !me_halfop(chan)) {
     if (chan->channel.mode & CHANINV) {
-      dprintf(idx, "I can't help you now because I'm not a channel op or "
-              "halfop on %s.\n", chan->dname);
+      dprintf(idx, _("I can't help you now because I'm not a channel op or "
+              "halfop on %s.\n"), chan->dname);
       return;
     }
     if (!channel_active(chan)) {
-      dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+      dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
       return;
     }
   }
   m = ismember(chan, nick);
   if (m && !chan_issplit(m)) {
-    dprintf(idx, "%s is already on %s!\n", nick, chan->dname);
+    dprintf(idx, _("%s is already on %s!\n"), nick, chan->dname);
     return;
   }
   dprintf(DP_SERVER, "INVITE %s %s\n", nick, chan->name);
-  dprintf(idx, "Inviting %s to %s.\n", nick, chan->dname);
+  dprintf(idx, _("Inviting %s to %s.\n"), nick, chan->dname);
 }
 
 static void cmd_channel(struct userrec *u, int idx, char *par)
@@ -736,15 +738,15 @@
   putlog(LOG_CMDS, "*", "#%s# (%s) channel", dcc[idx].nick, chan->dname);
   strncpyz(s, getchanmode(chan), sizeof s);
   if (channel_pending(chan))
-    egg_snprintf(s1, sizeof s1, "%s %s", IRC_PROCESSINGCHAN, chan->dname);
+    egg_snprintf(s1, sizeof s1, _("Processing channel %s"), chan->dname);
   else if (channel_active(chan))
-    egg_snprintf(s1, sizeof s1, "%s %s", IRC_CHANNEL, chan->dname);
+    egg_snprintf(s1, sizeof s1, _("Channel %s"), chan->dname);
   else
-    egg_snprintf(s1, sizeof s1, "%s %s", IRC_DESIRINGCHAN, chan->dname);
+    egg_snprintf(s1, sizeof s1, _("Desiring channel %s"), chan->dname);
   dprintf(idx, "%s, %d member%s, mode %s:\n", s1, chan->channel.members,
           chan->channel.members == 1 ? "" : "s", s);
   if (chan->channel.topic)
-    dprintf(idx, "%s: %s\n", IRC_CHANNELTOPIC, chan->channel.topic);
+    dprintf(idx, _("Channel Topic: %s\n"), chan->channel.topic);
   if (channel_active(chan)) {
     /* find max nicklen and handlen */
     maxnicklen = maxhandlen = 0;
@@ -759,7 +761,7 @@
     if (maxhandlen < 9)
       maxhandlen = 9;
 
-    dprintf(idx, "(n = owner, m = master, o = op, d = deop, b = bot)\n");
+    dprintf(idx, _("(n = owner, m = master, o = op, d = deop, b = bot)\n"));
     egg_snprintf(format, sizeof format, " %%-%us %%-%us %%-6s %%-5s %%s\n",
                  maxnicklen, maxhandlen);
     dprintf(idx, format, "NICKNAME", "HANDLE", " JOIN", "IDLE", "USER at HOST");
@@ -857,13 +859,13 @@
         chanflag = ' ';
       if (chan_issplit(m)) {
         egg_snprintf(format, sizeof format,
-                     "%%c%%-%us %%-%us %%s %%c     <- netsplit, %%lus\n",
+                     _("%%c%%-%us %%-%us %%s %%c     <- netsplit, %%lus\n"),
                      maxnicklen, maxhandlen);
         dprintf(idx, format, chanflag, m->nick, handle, s, atrflag,
                 now - (m->split));
       } else if (!rfc_casecmp(m->nick, botname)) {
         egg_snprintf(format, sizeof format,
-                     "%%c%%-%us %%-%us %%s %%c     <- it's me!\n",
+                     _("%%c%%-%us %%-%us %%s %%c     <- it's me!\n"),
                      maxnicklen, maxhandlen);
         dprintf(idx, format, chanflag, m->nick, handle, s, atrflag);
       } else {
@@ -883,16 +885,16 @@
                 m->userhost);
       }
       if (chan_fakeop(m))
-        dprintf(idx, "    (%s)\n", IRC_FAKECHANOP);
+        dprintf(idx, "    (%s)\n", _("FAKE CHANOP GIVEN BY SERVER"));
       if (chan_sentop(m))
-        dprintf(idx, "    (%s)\n", IRC_PENDINGOP);
+        dprintf(idx, "    (%s)\n", _("pending +o -- I'm lagged"));
       if (chan_sentdeop(m))
-        dprintf(idx, "    (%s)\n", IRC_PENDINGDEOP);
+        dprintf(idx, "    (%s)\n", _("pending -o -- I'm lagged"));
       if (chan_sentkick(m))
-        dprintf(idx, "    (%s)\n", IRC_PENDINGKICK);
+        dprintf(idx, "    (%s)\n", _("pending kick"));
     }
   }
-  dprintf(idx, "%s\n", IRC_ENDCHANINFO);
+  dprintf(idx, "%s\n", _("End of channel info."));
 }
 
 static void cmd_topic(struct userrec *u, int idx, char *par)
@@ -910,18 +912,18 @@
     return;
 
   if (!channel_active(chan)) {
-    dprintf(idx, "I'm not on %s right now!\n", chan->dname);
+    dprintf(idx, _("I'm not on %s right now!\n"), chan->dname);
     return;
   }
   if (!par[0]) {
     if (chan->channel.topic)
-      dprintf(idx, "The topic for %s is: %s\n", chan->dname,
+      dprintf(idx, _("The topic for %s is: %s\n"), chan->dname,
               chan->channel.topic);
     else
-      dprintf(idx, "No topic is set for %s\n", chan->dname);
+      dprintf(idx, _("No topic is set for %s\n"), chan->dname);
   } else if (channel_optopic(chan) && !me_op(chan) && !me_halfop(chan))
-    dprintf(idx, "I'm not a channel op or halfop on %s and the channel is "
-            "+t.\n", chan->dname);
+    dprintf(idx, _("I'm not a channel op or halfop on %s and the channel is "
+            "+t.\n"), chan->dname);
   else {
     dprintf(DP_SERVER, "TOPIC %s :%s\n", chan->name, par);
     dprintf(idx, "Changing topic...\n");
@@ -940,7 +942,7 @@
     return;
 
   putlog(LOG_CMDS, "*", "#%s# (%s) resetbans", dcc[idx].nick, chan->dname);
-  dprintf(idx, "Resetting bans on %s...\n", chan->dname);
+  dprintf(idx, _("Resetting bans on %s...\n"), chan->dname);
   resetbans(chan);
 }
 
@@ -968,7 +970,7 @@
     return;
 
   putlog(LOG_CMDS, "*", "#%s# (%s) resetinvites", dcc[idx].nick, chan->dname);
-  dprintf(idx, "Resetting resetinvites on %s...\n", chan->dname);
+  dprintf(idx, _("Resetting resetinvites on %s...\n"), chan->dname);
   resetinvites(chan);
 }
 
@@ -983,7 +985,7 @@
   char *p1 = s1;
 
   if ((!par[0]) || ((par[0] == '!') && (!par[1]))) {
-    dprintf(idx, "Usage: adduser <nick> [handle]\n");
+    dprintf(idx, _("Usage: adduser <nick> [handle]\n"));
     return;
   }
   nick = newsplit(&par);
@@ -1004,10 +1006,10 @@
       if ((unsigned char) *p <= 32)
         ok = 0;
     if (!ok) {
-      dprintf(idx, "You can't have strange characters in a nick.\n");
+      dprintf(idx, _("You can't have strange characters in a nick.\n"));
       return;
     } else if (strchr(BADHANDCHARS, par[0]) != NULL) {
-      dprintf(idx, "You can't start a nick with '%c'.\n", par[0]);
+      dprintf(idx, _("You can't start a nick with '%c'.\n"), par[0]);
       return;
     }
     hand = par;
@@ -1019,7 +1021,7 @@
       break;
   }
   if (!m) {
-    dprintf(idx, "%s is not on any channels I monitor\n", nick);
+    dprintf(idx, _("%s is not on any channels I monitor\n"), nick);
     return;
   }
   if (strlen(hand) > HANDLEN)
@@ -1027,13 +1029,13 @@
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
   u = get_user_by_host(s);
   if (u) {
-    dprintf(idx, "%s is already known as %s.\n", nick, u->handle);
+    dprintf(idx, _("%s is already known as %s.\n"), nick, u->handle);
     return;
   }
   u = get_user_by_handle(userlist, hand);
   if (u && (u->flags & (USER_OWNER | USER_MASTER)) &&
       !(atr & USER_OWNER) && egg_strcasecmp(dcc[idx].nick, hand)) {
-    dprintf(idx, "You can't add hostmasks to the bot owner/master.\n");
+    dprintf(idx, _("You can't add hostmasks to the bot owner/master.\n"));
     return;
   }
   if (!statichost)
@@ -1053,10 +1055,10 @@
     p1[0] = '*';
   }
   if (!u) {
-    dprintf(idx, "Added [%s]%s with no password.\n", hand, p1);
+    dprintf(idx, _("Added [%s]%s with no password.\n"), hand, p1);
     userlist = adduser(userlist, hand, p1, "-", USER_DEFAULT);
   } else {
-    dprintf(idx, "Added hostmask %s to %s.\n", p1, u->handle);
+    dprintf(idx, _("Added hostmask %s to %s.\n"), p1, u->handle);
     addhost_by_handle(hand, p1);
     get_user_flagrec(u, &user, chan->dname);
     check_this_user(hand, 0, NULL);
@@ -1073,7 +1075,7 @@
   struct flag_record victim = { FR_GLOBAL | FR_CHAN | FR_ANYWH, 0, 0, 0, 0, 0 };
 
   if (!par[0]) {
-    dprintf(idx, "Usage: deluser <nick>\n");
+    dprintf(idx, _("Usage: deluser <nick>\n"));
     return;
   }
   nick = newsplit(&par);
@@ -1084,14 +1086,14 @@
       break;
   }
   if (!m) {
-    dprintf(idx, "%s is not on any channels I monitor\n", nick);
+    dprintf(idx, _("%s is not on any channels I monitor\n"), nick);
     return;
   }
   get_user_flagrec(u, &user, chan->dname);
   egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost);
   u = get_user_by_host(s);
   if (!u) {
-    dprintf(idx, "%s is not a valid user.\n", nick);
+    dprintf(idx, _("%s is not a valid user.\n"), nick);
     return;
   }
   get_user_flagrec(u, &victim, NULL);
@@ -1104,25 +1106,25 @@
   /* Shouldn't allow people to remove permanent owners (guppy 9Jan1999) */
   if ((glob_owner(victim) && egg_strcasecmp(dcc[idx].nick, nick)) ||
       isowner(u->handle)) {
-    dprintf(idx, "You can't remove a bot owner!\n");
+    dprintf(idx, _("You can't remove a bot owner!\n"));
   } else if (glob_botmast(victim) && !glob_owner(user)) {
-    dprintf(idx, "You can't remove a bot master!\n");
+    dprintf(idx, _("You can't remove a bot master!\n"));
   } else if (chan_owner(victim) && !glob_owner(user)) {
-    dprintf(idx, "You can't remove a channel owner!\n");
+    dprintf(idx, _("You can't remove a channel owner!\n"));
   } else if (chan_master(victim) && !(glob_owner(user) || chan_owner(user))) {
-    dprintf(idx, "You can't remove a channel master!\n");
+    dprintf(idx, _("You can't remove a channel master!\n"));
   } else if (glob_bot(victim) && !glob_owner(user)) {
-    dprintf(idx, "You can't remove a bot!\n");
+    dprintf(idx, _("You can't remove a bot!\n"));
   } else {
     char buf[HANDLEN + 1];
 
     strncpyz(buf, u->handle, sizeof buf);
     buf[HANDLEN] = 0;
     if (deluser(u->handle)) {
-      dprintf(idx, "Deleted %s.\n", buf);       /* ?!?! :) */
+      dprintf(idx, _("Deleted %s.\n"), buf);       /* ?!?! :) */
       putlog(LOG_CMDS, "*", "#%s# deluser %s [%s]", dcc[idx].nick, nick, buf);
     } else
-      dprintf(idx, "Failed.\n");
+      dprintf(idx, _("Failed.\n"));
   }
 }
 
@@ -1133,24 +1135,24 @@
   if (par[0]) {
     chan = findchan_by_dname(par);
     if (!chan)
-      dprintf(idx, "%s\n", IRC_NOMONITOR);
+      dprintf(idx, "%s\n", _("I don't monitor that channel."));
     else {
       get_user_flagrec(u, &user, par);
       if (!glob_master(user) && !chan_master(user))
-        dprintf(idx, "You are not a master on %s.\n", chan->dname);
+        dprintf(idx, _("You are not a master on %s.\n"), chan->dname);
       else if (!channel_active(chan))
-        dprintf(idx, "I'm not on %s at the moment!\n", chan->dname);
+        dprintf(idx, _("I'm not on %s at the moment!\n"), chan->dname);
       else {
         putlog(LOG_CMDS, "*", "#%s# reset %s", dcc[idx].nick, par);
-        dprintf(idx, "Resetting channel info for %s...\n", chan->dname);
+        dprintf(idx, _("Resetting channel info for %s...\n"), chan->dname);
         reset_chan_info(chan, CHAN_RESETALL);
       }
     }
   } else if (!(u->flags & USER_MASTER))
-    dprintf(idx, "You are not a Bot Master.\n");
+    dprintf(idx, _("You are not a Bot Master.\n"));
   else {
     putlog(LOG_CMDS, "*", "#%s# reset all", dcc[idx].nick);
-    dprintf(idx, "Resetting channel info for all channels...\n");
+    dprintf(idx, _("Resetting channel info for all channels...\n"));
     for (chan = chanset; chan; chan = chan->next) {
       if (channel_active(chan))
         reset_chan_info(chan, CHAN_RESETALL);
Index: eggdrop1.8/src/mod/irc.mod/irc.c
diff -u eggdrop1.8/src/mod/irc.mod/irc.c:1.3 eggdrop1.8/src/mod/irc.mod/irc.c:1.3.2.1
--- eggdrop1.8/src/mod/irc.mod/irc.c:1.3	Sun Oct 24 07:22:40 2010
+++ eggdrop1.8/src/mod/irc.mod/irc.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * irc.c -- part of irc.mod
  *   support for channels within the bot
  *
- * $Id: irc.c,v 1.3 2010/10/24 13:22:40 pseudo Exp $
+ * $Id: irc.c,v 1.3.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -131,17 +131,17 @@
   reason[0] = 0;
   switch (type) {
   case REVENGE_KICK:
-    kick_msg = IRC_KICK_PROTECT;
-    simple_sprintf(reason, "kicked %s off %s", victim, chan->dname);
+    kick_msg = _("don't kick my friends, bud");
+    simple_sprintf(reason, _("kicked %s off %s"), victim, chan->dname);
     break;
   case REVENGE_DEOP:
-    simple_sprintf(reason, "deopped %s on %s", victim, chan->dname);
-    kick_msg = IRC_DEOP_PROTECT;
+    simple_sprintf(reason, _("deopped %s on %s"), victim, chan->dname);
+    kick_msg = _("don't deop my friends, bud");
     break;
   default:
-    kick_msg = "revenge!";
+    kick_msg = _("revenge!");
   }
-  putlog(LOG_MISC, chan->dname, "Punishing %s (%s)", badnick, reason);
+  putlog(LOG_MISC, chan->dname, _("Punishing %s (%s)"), badnick, reason);
 
   /* Set the offender +d */
   if ((chan->revenge_mode > 0) && !(chan_deop(fr) || glob_deop(fr))) {
@@ -156,8 +156,8 @@
       else
         fr.chan |= USER_DEOP;
       set_user_flagrec(u, &fr, chan->dname);
-      putlog(LOG_MISC, "*", "No longer opping %s[%s] (%s)", u->handle, whobad,
-             reason);
+      putlog(LOG_MISC, "*", _("No longer opping %s[%s] (%s)"), u->handle,
+             whobad, reason);
     }
     /* ... or just setting to deop */
     else if (u) {
@@ -166,7 +166,8 @@
       fr.chan |= USER_DEOP;
       set_user_flagrec(u, &fr, chan->dname);
       simple_sprintf(s, "(%s) %s", ct, reason);
-      putlog(LOG_MISC, "*", "Now deopping %s[%s] (%s)", u->handle, whobad, s);
+      putlog(LOG_MISC, "*", _("Now deopping %s[%s] (%s)"), u->handle, whobad,
+             s);
     }
     /* ... or creating new user and setting that to deop */
     else {
@@ -195,7 +196,7 @@
       set_user_flagrec(u, &fr, chan->dname);
       simple_sprintf(s, "(%s) %s (%s)", ct, reason, whobad);
       set_user(&USERENTRY_COMMENT, u, (void *) s);
-      putlog(LOG_MISC, "*", "Now deopping %s (%s)", whobad, reason);
+      putlog(LOG_MISC, "*", _("Now deopping %s (%s)"), whobad, reason);
     }
   }
 
@@ -321,7 +322,7 @@
       break;
   if (!x || !x->nick[0]) {
     if (!channel_pending(chan) && !channel_djoins(chan))
-        putlog(LOG_MISC, "*", "(!) killmember(%s) -> nonexistent", nick);
+        debug1(_("(!) killmember(%s) -> nonexistent"), nick);
     return 0;
   }
   if (old)
@@ -338,7 +339,7 @@
     chan->channel.members = 0;
     for (x = chan->channel.member; x && x->nick[0]; x = x->next)
       chan->channel.members++;
-    putlog(LOG_MISC, "*", "(!) actually I know of %d members.",
+    putlog(LOG_MISC, "*", _("(!) actually I know of %d members."),
            chan->channel.members);
   }
   if (!chan->channel.member) {
@@ -542,7 +543,7 @@
       i++;
   if (i == 1 && channel_cycle(chan) && !channel_stop_cycle(chan)) {
     if (chan->name[0] != '+') { /* Its pointless to cycle + chans for ops */
-      putlog(LOG_MISC, "*", "Trying to cycle %s to regain ops.", chan->dname);
+      putlog(LOG_MISC, "*", _("Trying to cycle %s to regain ops."), chan->dname);
       dprintf(DP_MODE, "PART %s\n", chan->name);
 
       /* If it's a !chan, we need to recreate the channel with !!chan <cybah> */
@@ -571,7 +572,7 @@
        * help(services), we cant get them - Raist
        */
       if (chan->name[0] != '+' && channel_logstatus(chan))
-        putlog(LOG_MISC, "*", "%s is active but has no ops :(", chan->dname);
+        putlog(LOG_MISC, "*", _("%s is active but has no ops :("), chan->dname);
       chan->status |= CHAN_WHINED;
     }
     for (m = chan->channel.member; m && m->nick[0]; m = m->next) {
@@ -616,7 +617,8 @@
                 !u_sticky_mask(global_bans, b->mask) &&
                 expired_mask(chan, b->who)) {
               putlog(LOG_MODES, chan->dname,
-                     "(%s) Channel ban on %s expired.", chan->dname, b->mask);
+                     _("(%s) Channel ban on %s expired."), chan->dname,
+                     b->mask);
               add_mode(chan, '-', 'b', b->mask);
               b->timer = now;
             }
@@ -639,12 +641,11 @@
                * Jason
                */
               if (match) {
-                putlog(LOG_MODES, chan->dname,
-                       "(%s) Channel exemption %s NOT expired. Exempt still set!",
-                       chan->dname, e->mask);
+                putlog(LOG_MODES, chan->dname, _("(%s) Channel exemption %s "
+                       "NOT expired. Exempt still set!"), chan->dname, e->mask);
               } else {
                 putlog(LOG_MODES, chan->dname,
-                       "(%s) Channel exemption on %s expired.",
+                       _("(%s) Channel exemption on %s expired."),
                        chan->dname, e->mask);
                 add_mode(chan, '-', 'e', e->mask);
               }
@@ -659,7 +660,7 @@
                 !u_sticky_mask(global_invites, b->mask) &&
                 expired_mask(chan, b->who)) {
               putlog(LOG_MODES, chan->dname,
-                     "(%s) Channel invitation on %s expired.",
+                     _("(%s) Channel invitation on %s expired."),
                      chan->dname, b->mask);
               add_mode(chan, '-', 'I', b->mask);
               b->timer = now;
@@ -689,7 +690,7 @@
                          m->user ? m->user : get_user_by_host(s),
                          chan->dname, "lost in the netsplit");
           putlog(LOG_JOIN, chan->dname,
-                 "%s (%s) got lost in the net-split.", m->nick, m->userhost);
+                 _("%s (%s) got lost in the net-split."), m->nick, m->userhost);
           killmember(chan, m->nick);
         }
         m = n;
@@ -991,7 +992,7 @@
   int k, l;
   struct chanset_t *chan;
 
-  strcpy(q, "Channels: ");
+  strcpy(q, _("Channels: "));
   k = 10;
   for (chan = chanset; chan; chan = chan->next) {
     if (idx != DP_STDOUT)
@@ -1000,13 +1001,13 @@
       p = NULL;
       if (!channel_inactive(chan)) {
         if (chan->status & CHAN_JUPED)
-          p = MISC_JUPED;
+          p = _("juped");
         else if (!(chan->status & CHAN_ACTIVE))
-          p = MISC_TRYING;
+          p = _("trying");
         else if (chan->status & CHAN_PEND)
-          p = MISC_PENDING;
+          p = _("pending");
         else if ((chan->dname[0] != '+') && !me_op(chan))
-          p = MISC_WANTOPS;
+          p = _("need ops");
       }
       l = simple_sprintf(ch, "%s%s%s%s, ", chan->dname, p ? " (" : "",
                          p ? p : "", p ? ")" : "");
@@ -1212,15 +1213,15 @@
   module_register(MODULE_NAME, irc_table, 1, 5);
   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.");
   }
   if (!(server_funcs = module_depend(MODULE_NAME, "server", 1, 0))) {
     module_undepend(MODULE_NAME);
-    return "This module requires server module 1.0 or later.";
+    return _("This module requires server module 1.0 or later.");
   }
   if (!(channels_funcs = module_depend(MODULE_NAME, "channels", 1, 1))) {
     module_undepend(MODULE_NAME);
-    return "This module requires channels module 1.1 or later.";
+    return _("This module requires channels module 1.1 or later.");
   }
   for (chan = chanset; chan; chan = chan->next) {
     if (!channel_inactive(chan)) {
Index: eggdrop1.8/src/mod/irc.mod/mode.c
diff -u eggdrop1.8/src/mod/irc.mod/mode.c:1.1.1.1 eggdrop1.8/src/mod/irc.mod/mode.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/irc.mod/mode.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/irc.mod/mode.c	Tue Nov 16 08:16:57 2010
@@ -4,7 +4,7 @@
  *   channel mode changes and the bot's reaction to them
  *   setting and getting the current wanted channel modes
  *
- * $Id: mode.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: mode.c,v 1.1.1.1.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -412,7 +412,8 @@
   if (!m) {
     if (channel_pending(chan))
       return;
-    putlog(LOG_MISC, chan->dname, CHAN_BADCHANMODE, chan->dname, who);
+    putlog(LOG_MISC, chan->dname, _("* Mode change on %s for nonexistent %s!"),
+           chan->dname, who);
     chan->status |= CHAN_PEND;
     refresh_who_chan(chan->name);
     return;
@@ -510,7 +511,8 @@
   if (!m) {
     if (channel_pending(chan))
       return;
-    putlog(LOG_MISC, chan->dname, CHAN_BADCHANMODE, chan->dname, who);
+    putlog(LOG_MISC, chan->dname, _("* Mode change on %s for nonexistent %s!"),
+           chan->dname, who);
     chan->status |= CHAN_PEND;
     refresh_who_chan(chan->name);
     return;
@@ -605,7 +607,8 @@
   if (!m) {
     if (channel_pending(chan))
       return;
-    putlog(LOG_MISC, chan->dname, CHAN_BADCHANMODE, chan->dname, who);
+    putlog(LOG_MISC, chan->dname, _("* Mode change on %s for nonexistent %s!"),
+           chan->dname, who);
     chan->status |= CHAN_PEND;
     refresh_who_chan(chan->name);
     return;
@@ -650,7 +653,7 @@
   }
 
   if (!nick[0])
-    putlog(LOG_MODES, chan->dname, "TS resync (%s): %s deopped by %s",
+    putlog(LOG_MODES, chan->dname, _("TS resync (%s): %s deopped by %s"),
            chan->dname, who, from);
 
   /* Check for mass deop */
@@ -678,7 +681,7 @@
     if (chan->need_op[0])
       do_tcl("need-op", chan->need_op);
     if (!nick[0])
-      putlog(LOG_MODES, chan->dname, "TS resync deopped me on %s :(",
+      putlog(LOG_MODES, chan->dname, _("TS resync deopped me on %s :("),
              chan->dname);
   }
   if (nick[0])
@@ -698,7 +701,8 @@
   if (!m) {
     if (channel_pending(chan))
       return;
-    putlog(LOG_MISC, chan->dname, CHAN_BADCHANMODE, chan->dname, who);
+    putlog(LOG_MISC, chan->dname, _("* Mode change on %s for nonexistent %s!"),
+           chan->dname, who);
     chan->status |= CHAN_PEND;
     refresh_who_chan(chan->name);
     return;
@@ -746,7 +750,7 @@
   }
 
   if (!nick[0])
-    putlog(LOG_MODES, chan->dname, "TS resync (%s): %s deopped by %s",
+    putlog(LOG_MODES, chan->dname, _("TS resync (%s): %s deopped by %s"),
            chan->dname, who, from);
   if (!(m->flags & (CHANVOICE | STOPWHO))) {
     chan->status |= CHAN_PEND;
@@ -809,13 +813,13 @@
       for (b = cycle ? chan->bans : global_bans; b; b = b->next) {
         if (match_addr(b->mask, who)) {
           if (b->desc && b->desc[0] != '@')
-            egg_snprintf(resn, sizeof resn, "%s %s", IRC_PREBANNED, b->desc);
+            egg_snprintf(resn, sizeof resn, _("Banned: %s"), b->desc);
           else
             resn[0] = 0;
         }
       }
     }
-    kick_all(chan, who, resn[0] ? resn : IRC_BANNED,
+    kick_all(chan, who, resn[0] ? resn : _("Banned"),
              match_my_nick(nick) ? 0 : 1);
   }
   if (!nick[0] && (bounce_bans || bounce_modes) &&
@@ -1019,14 +1023,15 @@
     reversing = 0;
     chan = findchan(ch);
     if (!chan) {
-      putlog(LOG_MISC, "*", CHAN_FORCEJOIN, ch);
+      putlog(LOG_MISC, "*", _("Oops.  Someone made me join %s... leaving..."),
+             ch);
       dprintf(DP_SERVER, "PART %s\n", ch);
     } else if (channel_active(chan) || channel_pending(chan)) {
       z = strlen(msg);
       if (msg[--z] == ' ')      /* I hate cosmetic bugs :P -poptix */
         msg[z] = 0;
-      putlog(LOG_MODES, chan->dname, "%s: mode change '%s %s' by %s", ch, chg,
-             msg, from);
+      putlog(LOG_MODES, chan->dname, _("%s: mode change '%s %s' by %s"),
+             ch, chg, msg, from);
       u = get_user_by_host(from);
       get_user_flagrec(u, &user, ch);
       nick = splitnick(&from);
@@ -1038,14 +1043,16 @@
           (channel_dontkickops(chan) && (chan_op(user) || (glob_op(user) &&
           !chan_deop(user))))) && !match_my_nick(nick)) {
         if (chan_fakeop(m) || chan_fakehalfop(m)) {
-          putlog(LOG_MODES, ch, CHAN_FAKEMODE, ch);
-          dprintf(DP_MODE, "KICK %s %s :%s\n", ch, nick, CHAN_FAKEMODE_KICK);
+          putlog(LOG_MODES, ch, _("Mode change by fake op on %s! Reversing..."),
+                ch);
+          dprintf(DP_MODE, "KICK %s %s :%s\n", ch, nick, _("Abusing desync"));
           m->flags |= SENTKICK;
           reversing = 1;
         } else if (!chan_hasop(m) && !chan_hashalfop(m) &&
                  !channel_nodesynch(chan)) {
-          putlog(LOG_MODES, ch, CHAN_DESYNCMODE, ch);
-          dprintf(DP_MODE, "KICK %s %s :%s\n", ch, nick, CHAN_DESYNCMODE_KICK);
+          putlog(LOG_MODES, ch, _("Mode change by non-chanop on %s! "
+                  "Reversing..."), ch);
+          dprintf(DP_MODE, "KICK %s %s :%s\n", ch, nick, _("Abusing desync"));
           m->flags |= SENTKICK;
           reversing = 1;
         }
@@ -1246,7 +1253,8 @@
           if (!m) {
             if (channel_pending(chan))
               break;
-            putlog(LOG_MISC, chan->dname, CHAN_BADCHANMODE, chan->dname, op);
+            putlog(LOG_MISC, chan->dname, _("* Mode change on %s for "
+                   "nonexistent %s!"), chan->dname, op);
             chan->status |= CHAN_PEND;
             refresh_who_chan(chan->name);
           } else {
Index: eggdrop1.8/src/mod/irc.mod/msgcmds.c
diff -u eggdrop1.8/src/mod/irc.mod/msgcmds.c:1.3 eggdrop1.8/src/mod/irc.mod/msgcmds.c:1.3.2.1
--- eggdrop1.8/src/mod/irc.mod/msgcmds.c:1.3	Mon Oct 25 09:56:38 2010
+++ eggdrop1.8/src/mod/irc.mod/msgcmds.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * msgcmds.c -- part of irc.mod
  *   all commands entered via /MSG
  *
- * $Id: msgcmds.c,v 1.3 2010/10/25 15:56:38 pseudo Exp $
+ * $Id: msgcmds.c,v 1.3.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -40,7 +40,7 @@
   if (u) {
     atr = u->flags;
     if (!(atr & USER_COMMON)) {
-      dprintf(DP_HELP, "NOTICE %s :%s, %s.\n", nick, IRC_HI, u->handle);
+      dprintf(DP_HELP, _("NOTICE %s :Hi, %s.\n"), nick, u->handle);
       return 1;
     }
   }
@@ -52,7 +52,7 @@
   }
   egg_snprintf(s, sizeof s, "%s!%s", nick, h);
   if (u_match_mask(global_bans, s)) {
-    dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, IRC_BANNED2);
+    dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You're banned, goober."));
     return 1;
   }
   if (atr & USER_COMMON) {
@@ -60,8 +60,8 @@
     strcpy(s, host);
     egg_snprintf(host, sizeof host, "%s!%s", nick, s + 2);
     userlist = adduser(userlist, handle, host, "-", USER_DEFAULT);
-    putlog(LOG_MISC, "*", "%s %s (%s) -- %s",
-           IRC_INTRODUCED, nick, host, IRC_COMMONSITE);
+    putlog(LOG_MISC, "*", _("Introduced to %s (%s) -- common site"),
+           nick, host);
     common = 1;
   } else {
     maskhost(s, host);
@@ -73,7 +73,7 @@
     } else
       userlist = adduser(userlist, handle, host, "-",
                          sanity_check(default_flags));
-    putlog(LOG_MISC, "*", "%s %s (%s)", IRC_INTRODUCED, nick, host);
+    putlog(LOG_MISC, "*", _("Introduced to %s (%s)"), nick, host);
   }
   for (chan = chanset; chan; chan = chan->next)
     if (ismember(chan, handle))
@@ -91,15 +91,16 @@
     putlog(LOG_MISC, "*", IRC_INIT1, handle);
     make_userfile = 0;
     write_userfile(-1);
-    add_note(handle, botnetnick, IRC_INITNOTE, -1, 0);
+    add_note(handle, botnetnick, _("Welcome to Eggdrop! =]"), -1, 0);
   } else {
     dprintf(DP_HELP, IRC_INTRO1, nick, botname);
   }
   if (strlen(nick) > HANDLEN)
     /* Notify the user that his/her handle was truncated. */
-    dprintf(DP_HELP, IRC_NICKTOOLONG, nick, handle);
+    dprintf(DP_HELP, _("NOTICE %s :Your nick was too long and therefore it "
+            "was truncated to '%s'.\n"), nick, handle);
   if (notify_new[0]) {
-    egg_snprintf(s, sizeof s, IRC_INITINTRO, nick, host);
+    egg_snprintf(s, sizeof s, _("introduced to %s from %s"), nick, host);
     strcpy(s1, notify_new);
     while (s1[0]) {
       p1 = strchr(s1, ',');
@@ -128,18 +129,20 @@
 
   if (!par[0]) {
     dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
-            u_pass_match(u, "-") ? IRC_NOPASS : IRC_PASS);
+            u_pass_match(u, "-") ? _("You don't have a password set.") :
+            _("You have a password set."));
     putlog(LOG_CMDS, "*", "(%s!%s) !%s! PASS?", nick, host, u->handle);
     return 1;
   }
   old = newsplit(&par);
   if (!u_pass_match(u, "-") && !par[0]) {
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_EXISTPASS);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+            _("You already have a password set."));
     return 1;
   }
   if (par[0]) {
     if (!u_pass_match(u, old)) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_FAILPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Incorrect password."));
       return 1;
     }
     new = newsplit(&par);
@@ -149,12 +152,13 @@
   if (strlen(new) > 15)
     new[15] = 0;
   if (strlen(new) < 6) {
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_PASSFORMAT);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Please use at least "
+            "6 characters."));
     return 0;
   }
   set_user(&USERENTRY_PASS, u, new);
   dprintf(DP_HELP, "NOTICE %s :%s '%s'.\n", nick,
-          new == old ? IRC_SETPASS : IRC_CHANGEPASS, new);
+          new == old ? _("Password set to:") : _("Password changed to:"), new);
   return 1;
 }
 
@@ -168,7 +172,8 @@
 
   if (u && (u->flags & USER_COMMON)) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_FAILCOMMON);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+              _("You're at a common site; you can't IDENT."));
     return 1;
   }
   pass = newsplit(&par);
@@ -181,16 +186,18 @@
   u2 = get_user_by_handle(userlist, who);
   if (!u2) {
     if (u && !quiet_reject)
-      dprintf(DP_HELP, IRC_MISIDENT, nick, nick, u->handle);
+      dprintf(DP_HELP, _("NOTICE %s :You're not %s, you're %s.\n"), nick,
+              nick, u->handle);
   } else if (rfc_casecmp(who, origbotname) && !(u2->flags & USER_BOT)) {
     /* This could be used as detection... */
     if (u_pass_match(u2, "-")) {
       putlog(LOG_CMDS, "*", "(%s!%s) !*! IDENT %s", nick, host, who);
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+                "a password set."));
     } else if (!u_pass_match(u2, pass)) {
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_DENYACCESS);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Access denied."));
     } else if (u == u2) {
       /*
        * NOTE: Checking quiet_reject *after* u_pass_match()
@@ -198,22 +205,23 @@
        * (Broken since 1.3.0+bel17)  Bad Beldin! No Cookie!
        *   -Toth  [July 30, 2003]
        */
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_RECOGNIZED);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("I recognize you there."));
       return 1;
     } else if (u) {
-      dprintf(DP_HELP, IRC_MISIDENT, nick, who, u->handle);
+      dprintf(DP_HELP, _("NOTICE %s :You're not %s  you're %s.\n"), nick, who,
+              u->handle);
       return 1;
     } else {
       putlog(LOG_CMDS, "*", "(%s!%s) !*! IDENT %s", nick, host, who);
       egg_snprintf(s, sizeof s, "%s!%s", nick, host);
       maskhost(s, s1);
-      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, IRC_ADDHOSTMASK, s1);
+      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, _("Added hostmask"), s1);
       addhost_by_handle(who, s1);
       check_this_user(who, 0, NULL);
       return 1;
     }
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !*! failed IDENT %s", nick, host, who);
+  putlog(LOG_CMDS, "*", _("(%s!%s) !*! failed IDENT %s"), nick, host, who);
   return 1;
 }
 
@@ -226,34 +234,36 @@
 
   if (u->flags & USER_COMMON) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_FAILCOMMON);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+              _("You're at a common site; you can't IDENT."));
     return 1;
   }
   pass = newsplit(&par);
   if (!par[0]) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :You must supply a hostmask\n", nick);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("NOTICE %s :You must supply "
+              "a hostmask"));
   } else if (rfc_casecmp(u->handle, origbotname)) {
     /* This could be used as detection... */
     if (u_pass_match(u, "-")) {
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have a password set."));
     } else if (!u_pass_match(u, pass)) {
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_DENYACCESS);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Access denied."));
     } else if (get_user_by_host(par)) {
       if (!quiet_reject)
-        dprintf(DP_HELP, "NOTICE %s :That hostmask clashes with another "
-                "already in use.\n", nick);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("That hostmask clashes with "
+                "another already in use."));
     } else {
       putlog(LOG_CMDS, "*", "(%s!%s) !*! ADDHOST %s", nick, host, par);
-      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, IRC_ADDHOSTMASK, par);
+      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, _("Added hostmask"), par);
       addhost_by_handle(u->handle, par);
       check_this_user(u->handle, 0, NULL);
       return 1;
     }
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !*! failed ADDHOST %s", nick, host, par);
+  putlog(LOG_CMDS, "*", _("(%s!%s) !*! failed ADDHOST %s"), nick, host, par);
   return 1;
 }
 
@@ -280,12 +290,14 @@
   } else {
     putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed INFO", nick, host, u->handle);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   if (par[0] && (strchr(CHANMETA, par[0]) != NULL)) {
     if (!findchan_by_dname(chname = newsplit(&par))) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOMONITOR);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("I don't monitor "
+              "that channel."));
       return 1;
     }
   } else
@@ -300,26 +312,27 @@
         locked = 1;
     }
     if (locked) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_INFOLOCKED);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Your info line is locked"));
       return 1;
     }
     if (!egg_strcasecmp(par, "none")) {
       par[0] = 0;
       if (chname) {
         set_handle_chaninfo(userlist, u->handle, chname, NULL);
-        dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick, IRC_REMINFOON, chname);
+        dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick,
+                _("Removed your info line on"), chname);
         putlog(LOG_CMDS, "*", "(%s!%s) !%s! INFO %s NONE", nick, host,
                u->handle, chname);
       } else {
         set_user(&USERENTRY_INFO, u, NULL);
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_REMINFO);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Removed your info line."));
         putlog(LOG_CMDS, "*", "(%s!%s) !%s! INFO NONE", nick, host, u->handle);
       }
       return 1;
     }
     if (par[0] == '@')
       par++;
-    dprintf(DP_HELP, "NOTICE %s :%s %s\n", nick, IRC_FIELDCHANGED, par);
+    dprintf(DP_HELP, "NOTICE %s :%s %s\n", nick, _("Now:"), par);
     if (chname) {
       set_handle_chaninfo(userlist, u->handle, chname, par);
       putlog(LOG_CMDS, "*", "(%s!%s) !%s! INFO %s ...", nick, host, u->handle,
@@ -340,15 +353,16 @@
     putlog(LOG_CMDS, "*", "(%s!%s) !%s! INFO?", nick, host, u->handle);
   }
   if (p && p[0]) {
-    dprintf(DP_HELP, "NOTICE %s :%s %s\n", nick, IRC_FIELDCURRENT, p);
+    dprintf(DP_HELP, "NOTICE %s :%s %s\n", nick, _("Currently:"), p);
     dprintf(DP_HELP, "NOTICE %s :%s /msg %s info <pass>%s%s none\n",
-            nick, IRC_FIELDTOREMOVE, botname, chname ? " " : "", chname
+            nick, _("To remove it:"), botname, chname ? " " : "", chname
             ? chname : "");
   } else {
     if (chname)
-      dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick, IRC_NOINFOON, chname);
+      dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick,
+              _("You have no info set on"), chname);
     else
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOINFO);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You have no info set."));
   }
   return 1;
 }
@@ -369,18 +383,20 @@
 
   if (!par[0]) {
     dprintf(DP_HELP, "NOTICE %s :%s: /msg %s who <channel>\n", nick,
-            MISC_USAGE, botname);
+            _("Usage"), botname);
     return 0;
   }
   chan = findchan_by_dname(par);
   if (!chan) {
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOMONITOR);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+            _("I don't monitor that channel."));
     return 0;
   }
   get_user_flagrec(u, &fr, par);
   if (channel_hidden(chan) && !hand_on_chan(chan, u) &&
       !glob_op(fr) && !glob_friend(fr) && !chan_op(fr) && !chan_friend(fr)) {
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_CHANHIDDEN);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Channel is currently "
+            "hidden."));
     return 1;
   }
   putlog(LOG_CMDS, "*", "(%s!%s) !%s! WHO", nick, host, u->handle);
@@ -408,14 +424,15 @@
       dprintf(DP_HELP, "NOTICE %s :[%9s] %s\n", nick, m->nick, info);
     else {
       if (match_my_nick(m->nick))
-        dprintf(DP_HELP, "NOTICE %s :[%9s] <-- I'm the bot, of course.\n",
-                nick, m->nick);
+        dprintf(DP_HELP, "NOTICE %s :[%9s] %s\n",
+                nick, m->nick, _("<-- I'm the bot, of course."));
       else if (u && (u->flags & USER_BOT)) {
         if (bot_flags(u) & BOT_SHARE)
-          dprintf(DP_HELP, "NOTICE %s :[%9s] <-- a twin of me\n",
-                  nick, m->nick);
+          dprintf(DP_HELP, "NOTICE %s :[%9s] %s\n", nick, m->nick,
+                  _("<-- a twin of me"));
         else
-          dprintf(DP_HELP, "NOTICE %s :[%9s] <-- another bot\n", nick, m->nick);
+          dprintf(DP_HELP, "NOTICE %s :[%9s] %s\n", nick, m->nick,
+                  _("<-- another bot"));
       } else {
         if (i) {
           also[i++] = ',';
@@ -423,7 +440,7 @@
         }
         i += my_strcpy(also + i, m->nick);
         if (i > 400) {
-          dprintf(DP_HELP, "NOTICE %s :No info: %s\n", nick, also);
+          dprintf(DP_HELP, _("NOTICE %s :No info: %s\n"), nick, also);
           i = 0;
           also[0] = 0;
         }
@@ -431,7 +448,7 @@
     }
   }
   if (i) {
-    dprintf(DP_HELP, "NOTICE %s :No info: %s\n", nick, also);
+    dprintf(DP_HELP, _("NOTICE %s :No info: %s\n"), nick, also);
   }
   return 1;
 }
@@ -456,7 +473,7 @@
 
   if (!par[0]) {
     dprintf(DP_HELP, "NOTICE %s :%s: /msg %s whois <handle>\n", nick,
-            MISC_USAGE, botname);
+            _("Usage"), botname);
     return 0;
   }
   if (strlen(par) > NICKMAX)
@@ -479,7 +496,8 @@
       }
     }
     if (!ok) {
-      dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, par, USERF_NOUSERREC);
+      dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, par,
+              _("No such user record."));
       return 1;
     }
   }
@@ -496,7 +514,7 @@
   for (chan = chanset; chan; chan = chan->next) {
     if (hand_on_chan(chan, u2)) {
       egg_snprintf(s1, sizeof s1, "NOTICE %s :[%s] %s: %s.", nick, u2->handle,
-                   IRC_ONCHANNOW, chan->dname);
+                   _("Now on channel"), chan->dname);
       ok = 1;
     } else {
       get_user_flagrec(u, &fr, chan->dname);
@@ -508,26 +526,32 @@
         egg_strftime(s, 14, "%b %d %H:%M", localtime(&tt));
         ok = 1;
         egg_snprintf(s1, sizeof s1, "NOTICE %s :[%s] %s %s on %s", nick,
-                     u2->handle, IRC_LASTSEENAT, s, chan->dname);
+                     u2->handle, _("Last seen at"), s, chan->dname);
       }
     }
   }
   if (!ok)
     egg_snprintf(s1, sizeof s1, "NOTICE %s :[%s] %s", nick, u2->handle,
-                 IRC_NEVERJOINED);
+                 _("Never seen on channel."));
   dprintf(DP_HELP, "%s\n", s1);
   if (u2->flags & USER_BOT)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: bot\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: bot"));
   else if (u2->flags & USER_OWNER)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: global owner\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: global owner"));
   else if (u2->flags & USER_MASTER)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: global master\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: botnet master"));
   else if (u2->flags & USER_BOTMAST)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: botnet master\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: botnet master"));
   else if (u2->flags & USER_OP)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: global op\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: global op"));
   else if (u2->flags & USER_VOICE)
-    dprintf(DP_HELP, "NOTICE %s :[%s] Status: global voice\n", nick, u2->handle);
+    dprintf(DP_HELP, "NOTICE %s :[%s] %s\n", nick, u2->handle,
+            _("Status: global voice"));
   return 1;
 }
 
@@ -541,9 +565,10 @@
   if (!u) {
     if (!quiet_reject) {
       if (!learn_users)
-        dprintf(DP_HELP, "NOTICE %s :No access\n", nick);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("No access"));
       else {
-        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_DONTKNOWYOU);
+        dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("I don't know you; "
+                "please introduce yourself first."));
         dprintf(DP_HELP, "NOTICE %s :/MSG %s hello\n", nick, botname);
       }
     }
@@ -563,7 +588,7 @@
       showhelp(nick, par, &fr, 0);
     }
   } else
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOHELP);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("No help."));
 
   return 1;
 }
@@ -659,11 +684,12 @@
     if (!u_pass_match(u, "-")) {
       if (!(chan = findchan_by_dname(par))) {
         dprintf(DP_HELP, "NOTICE %s :%s: /MSG %s key <pass> <channel>\n",
-                nick, MISC_USAGE, botname);
+                nick, _("Usage"), botname);
         return 1;
       }
       if (!channel_active(chan)) {
-        dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par, IRC_NOTONCHAN);
+        dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par,
+                _("Not on that channel right now."));
         return 1;
       }
       chan = findchan_by_dname(par);
@@ -680,8 +706,8 @@
               dprintf(DP_SERVER, "INVITE %s %s\n", nick, chan->name);
             }
           } else {
-            dprintf(DP_HELP, "NOTICE %s :%s: no key set for this channel\n",
-                    nick, par);
+            dprintf(DP_HELP, "NOTICE %s :%s: %s\n",
+                    nick, par, _("no key set for this channel"));
             putlog(LOG_CMDS, "*", "(%s!%s) !%s! KEY %s", nick, host, u->handle,
                    par);
           }
@@ -690,7 +716,7 @@
       }
     }
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed KEY %s", nick, host,
+  putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed KEY %s"), nick, host,
          (u ? u->handle : "*"), par);
   return 1;
 }
@@ -719,7 +745,7 @@
             putlog(LOG_CMDS, "*", "(%s!%s) !%s! VOICE %s", nick, host,
                    u->handle, par);
           } else
-            putlog(LOG_CMDS, "*", "(%s!%s) !*! failed VOICE %s",
+            putlog(LOG_CMDS, "*", _("(%s!%s) !*! failed VOICE %s"),
                    nick, host, par);
           return 1;
         }
@@ -735,7 +761,7 @@
       }
     }
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !*! failed VOICE", nick, host);
+  putlog(LOG_CMDS, "*", _("(%s!%s) !*! failed VOICE"), nick, host);
   return 1;
 }
 
@@ -758,16 +784,18 @@
             (chan->channel.mode & CHANINV))
           dprintf(DP_SERVER, "INVITE %s %s\n", nick, chan->name);
       }
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! INVITE ALL", nick, host, u->handle);
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! INVITE ALL"), nick, host,
+             u->handle);
       return 1;
     }
     if (!(chan = findchan_by_dname(par))) {
       dprintf(DP_HELP, "NOTICE %s :%s: /MSG %s invite <pass> <channel>\n",
-              nick, MISC_USAGE, botname);
+              nick, _("Usage"), botname);
       return 1;
     }
     if (!channel_active(chan)) {
-      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par, IRC_NOTONCHAN);
+      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par,
+              _("Not on that channel right now."));
       return 1;
     }
     /* We need to check access here also (dw 991002) */
@@ -780,7 +808,7 @@
       return 1;
     }
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed INVITE %s", nick, host,
+  putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed INVITE %s"), nick, host,
          (u ? u->handle : "*"), par);
   return 1;
 }
@@ -812,21 +840,22 @@
   if (!u_pass_match(u, "-")) {
     pass = newsplit(&par);
     if (!u_pass_match(u, pass)) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed STATUS", nick, host,
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed STATUS"), nick, host,
              u->handle);
       return 1;
     }
   } else {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed STATUS", nick, host, u->handle);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed STATUS"), nick, host, u->handle);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   putlog(LOG_CMDS, "*", "(%s!%s) !%s! STATUS", nick, host, u->handle);
 
   i = count_users(userlist);
-  dprintf(DP_HELP, "NOTICE %s :I am %s, running %s: %d user%s  (mem: %uk).\n",
-          nick, botnetnick, ver, i, i == 1 ? "" : "s",
+  dprintf(DP_HELP, _("NOTICE %s :I am %s, running %s: %d %s  "
+          "(mem: %uk).\n"), nick, botnetnick, ver, i, P_("user", "users", i),
          (int) (expected_memory() / 1024));
 
   s[0] = 0;
@@ -842,24 +871,25 @@
   now2 -= (hr * 3600);
   min = (time_t) ((int) now2 / 60);
   sprintf(&s[strlen(s)], "%02d:%02d", (int) hr, (int) min);
-  dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick, MISC_ONLINEFOR, s);
+  dprintf(DP_HELP, "NOTICE %s :%s %s.\n", nick, _("Online for"), s);
 
   if (admin[0])
-    dprintf(DP_HELP, "NOTICE %s :Admin: %s.\n", nick, admin);
-  dprintf(DP_HELP, "NOTICE %s :OS: %s %s.\n", nick, uni_t, vers_t);
-  dprintf(DP_HELP, "NOTICE %s :Online as: %s!%s.\n", nick, botname, botuserhost);
+    dprintf(DP_HELP, _("NOTICE %s :Admin: %s.\n"), nick, admin);
+  dprintf(DP_HELP, _("NOTICE %s :OS: %s %s.\n"), nick, uni_t, vers_t);
+  dprintf(DP_HELP, _("NOTICE %s :Online as: %s!%s.\n"), nick, botname,
+          botuserhost);
 
   /* This shouldn't overflow anymore -Wcc */
   s[0] = 0;
-  strncpyz(s, "Channels: ", sizeof s);
+  strncpyz(s, _("Channels: "), sizeof s);
   for (chan = chanset; chan; chan = chan->next) {
     strncat(s, chan->dname, sizeof(s) - 1 - strlen(s));
     if (!channel_active(chan))
-      strncat(s, " (trying)", sizeof(s) - 1 - strlen(s));
+      strncat(s, _(" (trying)"), sizeof(s) - 1 - strlen(s));
     else if (channel_pending(chan))
-      strncat(s, " (pending)", sizeof(s) - 1 - strlen(s));
+      strncat(s, _(" (pending)"), sizeof(s) - 1 - strlen(s));
     else if (!me_op(chan))
-      strncat(s, " (need ops)", sizeof(s) - 1 - strlen(s));
+      strncat(s, _(" (need ops)"), sizeof(s) - 1 - strlen(s));
     strncat(s, ", ", sizeof(s) - 1 - strlen(s));
     if (strlen(s) > 140) {
       s[strlen(s) - 2] = 0; /* remove ', ' */
@@ -884,14 +914,16 @@
   if (!u_pass_match(u, "-")) {
     pass = newsplit(&par);
     if (!u_pass_match(u, pass)) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed MEMORY", nick, host,
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed MEMORY"), nick, host,
              u->handle);
       return 1;
     }
   } else {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed MEMORY", nick, host, u->handle);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed MEMORY"), nick, host,
+           u->handle);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   putlog(LOG_CMDS, "*", "(%s!%s) !%s! MEMORY", nick, host, u->handle);
@@ -910,21 +942,22 @@
   if (!u_pass_match(u, "-")) {
     pass = newsplit(&par);
     if (!u_pass_match(u, pass)) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed DIE", nick, host, u->handle);
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed DIE"), nick, host, u->handle);
       return 1;
     }
   } else {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed DIE", nick, host, u->handle);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed DIE"), nick, host, u->handle);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   putlog(LOG_CMDS, "*", "(%s!%s) !%s! DIE", nick, host, u->handle);
-  dprintf(-serv, "NOTICE %s :%s\n", nick, BOT_MSGDIE);
+  dprintf(-serv, "NOTICE %s :%s\n", nick, _("Bot shut down beginning...."));
   if (!par[0])
-    egg_snprintf(s, sizeof s, "BOT SHUTDOWN (authorized by %s)", u->handle);
+    egg_snprintf(s, sizeof s, _("BOT SHUTDOWN (authorized by %s)"), u->handle);
   else
-    egg_snprintf(s, sizeof s, "BOT SHUTDOWN (%s: %s)", u->handle, par);
+    egg_snprintf(s, sizeof s, _("BOT SHUTDOWN (%s: %s)"), u->handle, par);
   chatout("*** %s\n", s);
   botnet_send_chat(-1, botnetnick, s);
   botnet_send_bye();
@@ -934,7 +967,7 @@
     nuke_server(par);
   write_userfile(-1);
   sleep(1);                     /* Give the server time to understand */
-  egg_snprintf(s, sizeof s, "DEAD BY REQUEST OF %s!%s", nick, host);
+  egg_snprintf(s, sizeof s, _("DEAD BY REQUEST OF %s!%s"), nick, host);
   fatal(s, 0);
   return 1;
 }
@@ -945,15 +978,15 @@
     return 1;
 
   if (u_pass_match(u, par)) {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! REHASH", nick, host, u->handle);
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, USERF_REHASHING);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! REHASH"), nick, host, u->handle);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Rehashing..."));
     if (make_userfile)
       make_userfile = 0;
     write_userfile(-1);
     do_restart = -2;
     return 1;
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed REHASH", nick, host, u->handle);
+  putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed REHASH"), nick, host, u->handle);
   return 1;
 }
 
@@ -963,12 +996,12 @@
     return 1;
 
   if (u_pass_match(u, par)) {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! SAVE", nick, host, u->handle);
-    dprintf(DP_HELP, "NOTICE %s :Saving user file...\n", nick);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! SAVE"), nick, host, u->handle);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Saving user file..."));
     write_userfile(-1);
     return 1;
   }
-  putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed SAVE", nick, host, u->handle);
+  putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed SAVE"), nick, host, u->handle);
   return 1;
 }
 
@@ -983,29 +1016,32 @@
   if (!u_pass_match(u, "-")) {
     pass = newsplit(&par);
     if (!u_pass_match(u, pass)) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed RESET", nick, host,
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed RESET"), nick, host,
              u->handle);
       return 1;
     }
   } else {
-    putlog(LOG_CMDS, "*", "(%s!%s) !*! failed RESET", nick, host);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !*! failed RESET"), nick, host);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   if (par[0]) {
     chan = findchan_by_dname(par);
     if (!chan) {
-      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par, IRC_NOMONITOR);
+      dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par, _("I don't monitor "
+              "that channel."));
       return 0;
     }
     putlog(LOG_CMDS, "*", "(%s!%s) !%s! RESET %s", nick, host, u->handle, par);
-    dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par, IRC_RESETCHAN);
+    dprintf(DP_HELP, "NOTICE %s :%s: %s\n", nick, par,
+            _("Resetting channel info."));
     reset_chan_info(chan, CHAN_RESETALL);
     return 1;
   }
   putlog(LOG_CMDS, "*", "(%s!%s) !%s! RESET ALL", nick, host, u->handle);
-  dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_RESETCHAN);
+  dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Resetting channel info."));
   for (chan = chanset; chan; chan = chan->next)
     reset_chan_info(chan, CHAN_RESETALL);
   return 1;
@@ -1028,13 +1064,13 @@
     if (!chan)
       return 0;
     if (!(chan->status & CHAN_ACTIVE)) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed GO %s (i'm blind)", nick,
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed GO %s (i'm blind)"), nick,
              host, u->handle, par);
       return 1;
     }
     get_user_flagrec(u, &fr, par);
     if (!chan_op(fr) && !(glob_op(fr) && !chan_deop(fr))) {
-      putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed GO %s (not op)", nick, host,
+      putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed GO %s (not op)"), nick, host,
              u->handle, par);
       return 1;
     }
@@ -1044,7 +1080,7 @@
              u->handle, par);
       return 1;
     }
-    putlog(LOG_CMDS, chan->dname, "(%s!%s) !%s! failed GO %s (i'm chop)",
+    putlog(LOG_CMDS, chan->dname, _("(%s!%s) !%s! failed GO %s (i'm chop)"),
            nick, host, u->handle, par);
     return 1;
   }
@@ -1063,10 +1099,10 @@
   if (ok) {
     putlog(LOG_CMDS, "*", "(%s!%s) !%s! GO %s", nick, host, u->handle, par);
   } else if (ok2) {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed GO %s (i'm chop)", nick, host,
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed GO %s (i'm chop)"), nick, host,
            u->handle, par);
   } else {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed GO %s (not op)", nick, host,
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed GO %s (not op)"), nick, host,
            u->handle, par);
   }
   return 1;
@@ -1084,9 +1120,10 @@
     return 1;
 
   if (u_pass_match(u, "-")) {
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed JUMP", nick, host, u->handle);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed JUMP"), nick, host, u->handle);
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, IRC_NOPASS);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have "
+              "a password set."));
     return 1;
   }
   s = newsplit(&par);           /* Password */
@@ -1118,11 +1155,11 @@
       strcpy(newserverpass, par);
     } else
       putlog(LOG_CMDS, "*", "(%s!%s) !%s! JUMP", nick, host, u->handle);
-    dprintf(-serv, "NOTICE %s :%s\n", nick, IRC_JUMP);
+    dprintf(-serv, "NOTICE %s :%s\n", nick, _("Jumping servers..."));
     cycle_time = 0;
-    nuke_server("changing servers");
+    nuke_server(_("changing servers"));
   } else
-    putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed JUMP", nick, host, u->handle);
+    putlog(LOG_CMDS, "*", _("(%s!%s) !%s! failed JUMP"), nick, host, u->handle);
   return 1;
 }
 
Index: eggdrop1.8/src/mod/notes.mod/cmdsnote.c
diff -u eggdrop1.8/src/mod/notes.mod/cmdsnote.c:1.1.1.1 eggdrop1.8/src/mod/notes.mod/cmdsnote.c:1.1.1.1.2.1
--- eggdrop1.8/src/mod/notes.mod/cmdsnote.c:1.1.1.1	Mon Jul 26 15:11:06 2010
+++ eggdrop1.8/src/mod/notes.mod/cmdsnote.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * cmdsnote.c -- part of notes.mod
  *   handles all notes interaction over the party line
  *
- * $Id: cmdsnote.c,v 1.1.1.1 2010/07/26 21:11:06 simple Exp $
+ * $Id: cmdsnote.c,v 1.1.1.1.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -29,7 +29,7 @@
   char *handle, *mask, *buf, *p;
 
   if (!par[0]) {
-    dprintf(idx, "%s: +noteign [handle] <ignoremask>\n", NOTES_USAGE);
+    dprintf(idx, _("Usage: +noteign [handle] <ignoremask>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# +noteign %s", dcc[idx].nick, par);
@@ -73,7 +73,7 @@
   char *handle, *mask, *buf, *p;
 
   if (!par[0]) {
-    dprintf(idx, "%s: -noteign [handle] <ignoremask>\n", NOTES_USAGE);
+    dprintf(idx, _("Usage: -noteign [handle] <ignoremask>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# -noteign %s", dcc[idx].nick, par);
@@ -155,7 +155,7 @@
   struct userrec *u1;
 
   if (!par[0]) {
-    dprintf(idx, "%s: fwd <handle> [user at bot]\n", NOTES_USAGE);
+    dprintf(idx, _("Usage: fwd <handle> [user at bot]\n"));
     return;
   }
   handle = newsplit(&par);
@@ -189,11 +189,12 @@
   char *fcn;
 
   if (!par[0]) {
-    dprintf(idx, "%s: notes index\n", NOTES_USAGE);
-    dprintf(idx, "       notes read <# or ALL>\n");
-    dprintf(idx, "       notes erase <# or ALL>\n");
-    dprintf(idx, "       %s\n", NOTES_MAYBE);
-    dprintf(idx, "       ex: notes erase 2-4;8;16-\n");
+    dprintf(idx, _("Usage: notes index\n"));
+    dprintf(idx, _("       notes read <# or ALL>\n"));
+    dprintf(idx, _("       notes erase <# or ALL>\n"));
+    dprintf(idx, _("       '#' may be numbers and/or intervals "
+                   "separated by ';'.\n"));
+    dprintf(idx, _("       ex: notes erase 2-4;8;16-\n"));
     return;
   }
   fcn = newsplit(&par);
@@ -210,7 +211,7 @@
     else
       notes_del(dcc[idx].nick, "", par, idx);
   } else {
-    dprintf(idx, "%s\n", NOTES_MUSTBE);
+    dprintf(idx, _("Function must be one of INDEX READ or ERASE.\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# notes %s %s", dcc[idx].nick, fcn, par);
@@ -223,7 +224,7 @@
 
   p = newsplit(&par);
   if (!par[0]) {
-    dprintf(idx, "%s: note <to-whom> <message>\n", NOTES_USAGE);
+    dprintf(idx, _("Usage: note <to-whom> <message>\n"));
     return;
   }
   while ((*par == ' ') || (*par == '<') || (*par == '>'))
Index: eggdrop1.8/src/mod/notes.mod/notes.c
diff -u eggdrop1.8/src/mod/notes.mod/notes.c:1.2 eggdrop1.8/src/mod/notes.mod/notes.c:1.2.2.1
--- eggdrop1.8/src/mod/notes.mod/notes.c:1.2	Tue Jul 27 15:49:42 2010
+++ eggdrop1.8/src/mod/notes.mod/notes.c	Tue Nov 16 08:16:57 2010
@@ -5,7 +5,7 @@
  *   note cmds
  *   note ignores
  *
- * $Id: notes.c,v 1.2 2010/07/27 21:49:42 pseudo Exp $
+ * $Id: notes.c,v 1.2.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -71,7 +71,7 @@
 static void fwd_display(int idx, struct user_entry *e)
 {
   if (dcc[idx].user && (dcc[idx].user->flags & USER_BOTMAST))
-    dprintf(idx, NOTES_FORWARD_TO, e->u.string);
+    dprintf(idx, _("  Forward notes to: %.70s\n"), e->u.string);
 }
 
 /* Determine how many notes are waiting for a user.
@@ -150,8 +150,8 @@
   unlink(notefile);
   sprintf(s, "%s~new", notefile);
   movefile(s, notefile);
-  putlog(LOG_MISC, "*", NOTES_SWITCHED_NOTES, tot, tot == 1 ? "" : "s",
-         oldnick, newnick);
+  putlog(LOG_MISC, "*", P_("Switched %d note from %s to %s.",
+         "Switched %d notes from %s to %s.", tot), tot, oldnick, newnick);
 }
 
 /* Get rid of old useless notes.
@@ -202,7 +202,7 @@
   sprintf(s, "%s~new", notefile);
   movefile(s, notefile);
   if (tot > 0)
-    putlog(LOG_MISC, "*", NOTES_EXPIRED, tot, tot == 1 ? "" : "s");
+    putlog(LOG_MISC, "*", P_("Expired one note", "Expired %d notes", tot), tot);
 }
 
 /* Add note to notefile.
@@ -277,7 +277,7 @@
       ok = 0;
     if (ok) {
       if ((add_note(fwd, p, work, idx, 0) == NOTE_OK) && (idx >= 0))
-        dprintf(idx, NOTES_FORWARD_NOTONLINE, f1);
+        dprintf(idx, _("Not online; forwarded to %s.\n"), f1);
       Tcl_AppendResult(irp, f1, NULL);
       to = NULL;
     } else {
@@ -289,7 +289,7 @@
   if (to) {
     if (notefile[0] == 0) {
       if (idx >= 0)
-        dprintf(idx, "%s\n", NOTES_UNSUPPORTED);
+        dprintf(idx, "%s\n", _("Notes are not supported by this bot."));
     } else if (num_notes(to) >= maxnotes) {
       if (idx >= 0)
         dprintf(idx, "%s\n", NOTES_NOTES2MANY);
@@ -299,8 +299,8 @@
         f = fopen(notefile, "w");
       if (f == NULL) {
         if (idx >= 0)
-          dprintf(idx, "%s\n", NOTES_NOTEFILE_FAILED);
-        putlog(LOG_MISC, "*", "%s", NOTES_NOTEFILE_UNREACHABLE);
+          dprintf(idx, "%s\n", _("Can't create notefile. Sorry."));
+        putlog(LOG_MISC, "*", "%s", _("Notefile unreachable!"));
       } else {
         char *p, *blah = argv[3], *from = argv[1];
         int l = 0;
@@ -317,7 +317,7 @@
                 l ? work : "", blah);
         fclose(f);
         if (idx >= 0)
-          dprintf(idx, "%s.\n", NOTES_STORED_MESSAGE);
+          dprintf(idx, _("Stored message.\n"));
       }
     }
   }
@@ -478,17 +478,17 @@
     srd = "-";
   if (!notefile[0]) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, _("You have no messages.\n"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
     return;
   }
   f = fopen(notefile, "r");
   if (f == NULL) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, _("You have no messages.\n"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
     return;
   }
   notes_parse(rd, srd);
@@ -512,15 +512,17 @@
           lapse = (int) ((now - tt) / 86400);
           if (lapse > note_life - 7) {
             if (lapse >= note_life)
-              strcat(dt, NOTES_EXPIRE_TODAY);
+              strcat(dt, _(" -- EXPIRES TODAY"));
             else
-              sprintf(&dt[strlen(dt)], NOTES_EXPIRE_XDAYS, note_life - lapse,
-                      (note_life - lapse) == 1 ? "" : "S");
+              sprintf(&dt[strlen(dt)], P_(" -- EXPIRES IN %d DAY",
+                      " -- EXPIRES IN %d DAYS", note_life - lapse),
+                      note_life - lapse);
           }
           if (srd[0] == '+') {
             if (idx >= 0) {
               if (ix == 1)
-                dprintf(idx, "### %s:\n", NOTES_WAITING);
+                dprintf(idx, _("### You have the following note(s) "
+                        "waiting:\n"));
               dprintf(idx, "  %2d. %s (%s)\n", ix, from, dt);
             } else
               dprintf(DP_HELP, "NOTICE %s :%2d. %s (%s)\n", nick, ix, from,
@@ -541,27 +543,29 @@
   fclose(f);
   if ((srd[0] != '+') && (ir == 0) && (ix > 1)) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NOT_THAT_MANY);
+      dprintf(idx, "%s.\n", _("You don't have that many messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NOT_THAT_MANY);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You don't have that many "
+              "messages"));
   }
   if (srd[0] == '+') {
     if (ix == 1) {
       if (idx >= 0)
-        dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+        dprintf(idx, "%s.\n", _("You have no messages"));
       else
-        dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+        dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
     } else {
       if (idx >= 0)
-        dprintf(idx, "### %s\n", (ix != 2) ? NOTES_DCC_USAGE_READ : NOTES_DCC_USAGE_READ2);
+        dprintf(idx, "### %s\n", P_("Use '.notes read' to read it.",
+                "Use '.notes read' to read them.", ix - 1));
       else
         dprintf(DP_HELP, "NOTICE %s :%s: %d\n", nick, MISC_TOTAL, ix - 1);
     }
   } else if ((ir == 0) && (ix == 1)) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, "%s.\n", _("You have no messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
   }
 }
 
@@ -582,26 +586,27 @@
     sdl = "-";
   if (!notefile[0]) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, "%s.\n", _("You have no messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
     return;
   }
   f = fopen(notefile, "r");
   if (f == NULL) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, "%s.\n", _("You have no messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
     return;
   }
   sprintf(s, "%s~new", notefile);
   g = fopen(s, "w");
   if (g == NULL) {
     if (idx >= 0)
-      dprintf(idx, "%s. :(\n", NOTES_FAILED_CHMOD);
+      dprintf(idx, "%s. :(\n", _("Can't modify the note file"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s. :(\n", nick, NOTES_FAILED_CHMOD);
+      dprintf(DP_HELP, "NOTICE %s :%s. :(\n", nick,
+              _("Can't modify the note file"));
     fclose(f);
     return;
   }
@@ -635,27 +640,28 @@
   movefile(s, notefile);
   if ((er == 0) && (in > 1)) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NOT_THAT_MANY);
+      dprintf(idx, "%s.\n", _("You don't have that many messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NOT_THAT_MANY);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You don't have "
+              "that many messages"));
   } else if (in == 1) {
     if (idx >= 0)
-      dprintf(idx, "%s.\n", NOTES_NO_MESSAGES);
+      dprintf(idx, "%s.\n", _("You have no messages"));
     else
-      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_NO_MESSAGES);
+      dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("You have no messages"));
   } else {
     if (er == (in - 1)) {
       if (idx >= 0)
-        dprintf(idx, "%s.\n", NOTES_ERASED_ALL);
+        dprintf(idx, "%s.\n", _("Erased all notes"));
       else
-        dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, NOTES_ERASED_ALL);
+        dprintf(DP_HELP, "NOTICE %s :%s.\n", nick, _("Erased all notes"));
     } else {
       if (idx >= 0)
-        dprintf(idx, "%s %d note%s; %d %s.\n", NOTES_ERASED, er,
-                (er != 1) ? "s" : "", in - 1 - er, NOTES_LEFT);
+        dprintf(idx, P_("Erased %d note; %d left.\n",
+                "Erased %d notes; %d left.\n", er), in - 1 - er);
       else
-        dprintf(DP_HELP, "NOTICE %s :%s %d note%s; %d %s.\n", nick, MISC_ERASED,
-                er, (er != 1) ? "s" : "", in - 1 - er, NOTES_LEFT);
+        dprintf(DP_HELP, "NOTICE %s :%s", nick, P_("Erased %d note; %d left.\n",
+                "Erased %d notes; %d left.\n", er), in - 1 - er);
     }
   }
 }
@@ -739,7 +745,8 @@
     dprintf(DP_HELP, "NOTICE %s :NOTES <pass> TO <hand> <msg>\n", nick);
     dprintf(DP_HELP, "NOTICE %s :NOTES <pass> READ <# or ALL>\n", nick);
     dprintf(DP_HELP, "NOTICE %s :NOTES <pass> ERASE <# or ALL>\n", nick);
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_MAYBE);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("'#' may be numbers and/or "
+            "intervals separated by ';'."));
     dprintf(DP_HELP, "NOTICE %s :Ex: NOTES mypass ERASE 2-4;8;16-\n", nick);
     return 1;
   }
@@ -771,16 +778,18 @@
 
     to = newsplit(&par);
     if (!par[0]) {
-      dprintf(DP_HELP, "NOTICE %s :%s: NOTES <pass> TO <hand> <message>\n",
-              nick, NOTES_USAGE);
+      dprintf(DP_HELP, "NOTICE %s :%s", _("Usage: NOTES <pass> TO <hand> "
+              "<message>\n"), nick);
       return 0;
     }
     u2 = get_user_by_handle(userlist, to);
     if (!u2) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_USERF_UNKNOWN);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("I don't know anyone "
+              "by that name."));
       return 1;
     } else if (is_bot(u2)) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_NOTTO_BOT);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("That's a bot. You can't "
+              "leave notes for a bot."));
       return 1;
     }
     for (i = 0; i < dcc_total; i++) {
@@ -795,28 +804,30 @@
           aok = 0;              /* Assume non dcc-chat == something weird, so
                                  * store notes for later */
         if (aok) {
-          dprintf(i, "\007%s [%s]: %s\n", u->handle, NOTES_OUTSIDE, par);
-          dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_DELIVERED);
+          dprintf(i, "\007%s [%s]: %s\n", u->handle, _("Outside note"), par);
+          dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Note delivered."));
           return 1;
         }
       }
     }
     if (notefile[0] == 0) {
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_UNSUPPORTED);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+              _("Notes are not supported by this bot."));
       return 1;
     }
     f = fopen(notefile, "a");
     if (f == NULL)
       f = fopen(notefile, "w");
     if (f == NULL) {
-      dprintf(DP_HELP, "NOTICE %s :%s", nick, NOTES_NOTEFILE_FAILED);
-      putlog(LOG_MISC, "*", "* %s", NOTES_NOTEFILE_UNREACHABLE);
+      dprintf(DP_HELP, "NOTICE %s :%s", nick, _("Can't create notefile. "
+              "Sorry."));
+      putlog(LOG_MISC, "*", "* %s", _("Notefile unreachable!"));
       return 1;
     }
     chmod(notefile, userfile_perm); /* Use userfile permissions. */
     fprintf(f, "%s %s %li %s\n", to, u->handle, (long) now, par);
     fclose(f);
-    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, NOTES_DELIVERED);
+    dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("Note delivered."));
     return 1;
   } else
     dprintf(DP_HELP, "NOTICE %s :%s: NOTES <pass> INDEX, READ, ERASE, TO\n",
@@ -850,10 +861,11 @@
               break;
             }
           if (k) {
-            dprintf(DP_HELP, "NOTICE %s :You have %d note%s waiting on %s.\n",
-                    m->nick, k, k == 1 ? "" : "s", botname);
+            dprintf(DP_HELP, P_("NOTICE %s :You have one note waiting on %s.\n",
+                    "NOTICE %s :You have %d notes waiting on %s.\n", k),
+                    m->nick, k, botname);
             dprintf(DP_HELP, "NOTICE %s :%s /MSG %s NOTES <pass> INDEX\n",
-                    m->nick, NOTES_FORLIST, botname);
+                    m->nick, _("For a list:"), botname);
           }
         }
       }
@@ -861,8 +873,10 @@
     for (l = 0; l < dcc_total; l++) {
       k = num_notes(dcc[l].nick);
       if ((k > 0) && (dcc[l].type->flags & DCT_CHAT)) {
-        dprintf(l, NOTES_WAITING2, k, (k == 1) ? "" : "s");
-        dprintf(l, "### %s\n", (k != 1) ? NOTES_DCC_USAGE_READ : NOTES_DCC_USAGE_READ2);
+        dprintf(l, P_("### You have %d note waiting.\n", "### You "
+                "have %d notes waiting.\n", k), k);
+        dprintf(l, "### %s\n", P_("Use '.notes read' to read it.",
+                "Use '.notes read' to read them.", k));
       }
     }
   }
@@ -875,7 +889,7 @@
   if (egg_strcasecmp(bot, botnetnick))
     return;
   if (msg && msg[0])
-    dprintf(idx, "%s\n", NOTES_STORED);
+    dprintf(idx, "%s\n", _("Notes will be stored."));
   else
     notes_read(dcc[idx].nick, 0, "+", idx);
 }
@@ -906,9 +920,10 @@
 
     i = num_notes(handle);
     if (i) {
-      dprintf(DP_HELP, NOTES_WAITING_NOTICE, nick, i, (i == 1) ? "" : "s", botname);
+      dprintf(DP_HELP, P_("NOTICE %s :You have one note waiting.",
+              "You have %d notes waiting.", i), nick, i, botname);
       dprintf(DP_HELP, "NOTICE %s :%s /MSG %s NOTES <pass> INDEX\n",
-              nick, NOTES_FORLIST, botname);
+              nick, _("For a list:"), botname);
     }
   }
 }
@@ -1192,11 +1207,10 @@
     int size = notes_expmem();
 
     if (notefile[0])
-      dprintf(idx, "    Notes can be stored in: %s\n", notefile);
+      dprintf(idx, _("    Notes can be stored in: %s\n"), notefile);
     else
-      dprintf(idx, "    Notes can not be stored.\n");
-    dprintf(idx, "    Using %d byte%s of memory\n", size,
-            (size != 1) ? "s" : "");
+      dprintf(idx, _("    Notes can not be stored.\n"));
+    dprintf(idx, _("    Using %d bytes of memory\n"), size);
   }
 }
 
@@ -1219,7 +1233,7 @@
   module_register(MODULE_NAME, notes_table, 2, 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_HOURLY, (Function) notes_hourly);
   add_hook(HOOK_MATCH_NOTEREJ, (Function) match_note_ignore);
Index: eggdrop1.8/src/mod/server.mod/cmdsserv.c
diff -u eggdrop1.8/src/mod/server.mod/cmdsserv.c:1.3 eggdrop1.8/src/mod/server.mod/cmdsserv.c:1.3.2.1
--- eggdrop1.8/src/mod/server.mod/cmdsserv.c:1.3	Mon Nov  1 16:38:34 2010
+++ eggdrop1.8/src/mod/server.mod/cmdsserv.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * cmdsserv.c -- part of server.mod
  *   handles commands from a user via dcc that cause server interaction
  *
- * $Id: cmdsserv.c,v 1.3 2010/11/01 22:38:34 pseudo Exp $
+ * $Id: cmdsserv.c,v 1.3.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -31,32 +31,32 @@
 
   putlog(LOG_CMDS, "*", "#%s# servers", dcc[idx].nick);
   if (!x) {
-    dprintf(idx, "There are no servers in the server list.\n");
+    dprintf(idx, _("There are no servers in the server list.\n"));
   } else {
-    dprintf(idx, "Server list:\n");
+    dprintf(idx, _("Server list:\n"));
     i = 0;
     for (; x; x = x->next) {
       if ((i == curserv) && realservername)
 #ifdef TLS
-        egg_snprintf(s, sizeof s, "  [%s]:%s%d (%s) <- I am here", x->name,
+        egg_snprintf(s, sizeof s, _("  [%s]:%s%d (%s) <- I am here"), x->name,
                      x->ssl ? "+" : "", x->port ? x->port : default_port,
                      realservername);
       else
         egg_snprintf(s, sizeof s, "  [%s]:%s%d %s", x->name, x->ssl ? "+" : "",
                      x->port ? x->port : default_port,
-                     (i == curserv) ? "<- I am here" : "");
+                     (i == curserv) ? _("<- I am here") : "");
 #else
-        egg_snprintf(s, sizeof s, "  [%s]:%d (%s) <- I am here", x->name,
+        egg_snprintf(s, sizeof s, _("  [%s]:%d (%s) <- I am here"), x->name,
                      x->port ? x->port : default_port, realservername);
       else
         egg_snprintf(s, sizeof s, "  [%s]:%d %s", x->name,
                      x->port ? x->port : default_port,
-                     (i == curserv) ? "<- I am here" : "");
+                     (i == curserv) ? _("<- I am here") : "");
 #endif
       dprintf(idx, "%s\n", s);
       i++;
     }
-    dprintf(idx, "End of server list.\n");
+    dprintf(idx, _("End of server list.\n"));
   }
 }
 
@@ -67,7 +67,7 @@
     return;
   }
   if (!par[0]) {
-    dprintf(idx, "Usage: dump <server stuff>\n");
+    dprintf(idx, _("Usage: dump <server stuff>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# dump %s", dcc[idx].nick, par);
@@ -109,7 +109,7 @@
     strncpyz(newserverpass, par, sizeof newserverpass);
   } else
     putlog(LOG_CMDS, "*", "#%s# jump", dcc[idx].nick);
-  dprintf(idx, "%s...\n", IRC_JUMP);
+  dprintf(idx, _("Jumping servers...\n"));
   cycle_time = 0;
   nuke_server("changing servers");
 }
@@ -119,7 +119,7 @@
   int msgs;
 
   if (!par[0]) {
-    dprintf(idx, "Usage: clearqueue <mode|server|help|all>\n");
+    dprintf(idx, _("Usage: clearqueue <mode|server|help|all>\n"));
     return;
   }
   if (!egg_strcasecmp(par, "all")) {
@@ -128,32 +128,32 @@
     msgq_clear(&mq);
     msgq_clear(&hq);
     double_warned = burst = 0;
-    dprintf(idx, "Removed %d message%s from all queues.\n", msgs,
-            (msgs != 1) ? "s" : "");
+    dprintf(idx, P_("Removed %d message from all queues.\n",
+            "Removed %d message from all queues.\n", msgs), msgs);
   } else if (!egg_strcasecmp(par, "mode")) {
     msgs = modeq.tot;
     msgq_clear(&modeq);
     if (mq.tot == 0)
       burst = 0;
     double_warned = 0;
-    dprintf(idx, "Removed %d message%s from the mode queue.\n", msgs,
-            (msgs != 1) ? "s" : "");
+    dprintf(idx, P_("Removed %d message from the mode queue.\n",
+            "Removed %d messages from the mode queue.\n", msgs), msgs);
   } else if (!egg_strcasecmp(par, "help")) {
     msgs = hq.tot;
     msgq_clear(&hq);
     double_warned = 0;
-    dprintf(idx, "Removed %d message%s from the help queue.\n", msgs,
-            (msgs != 1) ? "s" : "");
+    dprintf(idx, P_("Removed %d message from the help queue.\n",
+            "Removed %d messages from the help queue.\n", msgs), msgs);
   } else if (!egg_strcasecmp(par, "server")) {
     msgs = mq.tot;
     msgq_clear(&mq);
     if (modeq.tot == 0)
       burst = 0;
     double_warned = 0;
-    dprintf(idx, "Removed %d message%s from the server queue.\n", msgs,
-            (msgs != 1) ? "s" : "");
+    dprintf(idx, P_("Removed %d message from the server queue.\n",
+            "Removed %d messages from the server queue.\n", msgs), msgs);
   } else {
-    dprintf(idx, "Usage: clearqueue <mode|server|help|all>\n");
+    dprintf(idx, _("Usage: clearqueue <mode|server|help|all>\n"));
     return;
   }
   putlog(LOG_CMDS, "*", "#%s# clearqueue %s", dcc[idx].nick, par);
Index: eggdrop1.8/src/mod/server.mod/server.c
diff -u eggdrop1.8/src/mod/server.mod/server.c:1.6 eggdrop1.8/src/mod/server.mod/server.c:1.6.2.1
--- eggdrop1.8/src/mod/server.mod/server.c:1.6	Mon Nov  1 16:38:34 2010
+++ eggdrop1.8/src/mod/server.mod/server.c	Tue Nov 16 08:16:57 2010
@@ -2,7 +2,7 @@
  * server.c -- part of server.mod
  *   basic irc server support
  *
- * $Id: server.c,v 1.6 2010/11/01 22:38:34 pseudo Exp $
+ * $Id: server.c,v 1.6.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -369,11 +369,11 @@
   if (penalty > 99)
     penalty = 99;
   if (penalty < 2) {
-    putlog(LOG_SRVOUT, "*", "Penalty < 2sec; that's impossible!");
+    putlog(LOG_SRVOUT, "*", _("Penalty < 2sec; that's impossible!"));
     penalty = 2;
   }
   if (raw_log && penalty != 0)
-    putlog(LOG_SRVOUT, "*", "Adding penalty: %i", penalty);
+    putlog(LOG_SRVOUT, "*", _("Adding penalty: %i"), penalty);
   return penalty;
 }
 
@@ -853,7 +853,7 @@
     break;
 
   default:
-    putlog(LOG_MISC, "*", "Warning: queuing unknown type to server!");
+    putlog(LOG_MISC, "*", _("Warning: queuing unknown type to server!"));
     return;
   }
 
@@ -929,19 +929,19 @@
       case DP_MODE_NEXT:
         /* Fallthrough */
       case DP_MODE:
-        putlog(LOG_MISC, "*", "Warning: over maximum mode queue!");
+        putlog(LOG_MISC, "*", _("Warning: over maximum mode queue!"));
         break;
 
       case DP_SERVER_NEXT:
         /* Fallthrough */
       case DP_SERVER:
-        putlog(LOG_MISC, "*", "Warning: over maximum server queue!");
+        putlog(LOG_MISC, "*", _("Warning: over maximum server queue!"));
         break;
 
       case DP_HELP_NEXT:
         /* Fallthrough */
       case DP_HELP:
-        putlog(LOG_MISC, "*", "Warning: over maximum help queue!");
+        putlog(LOG_MISC, "*", _("Warning: over maximum help queue!"));
         break;
       }
     }
@@ -1174,7 +1174,8 @@
     new = Tcl_GetVar2(interp, name1, name2, TCL_GLOBAL_ONLY);
     if (strcmp(origbotname, (char *) new)) {
       if (origbotname[0]) {
-        putlog(LOG_MISC, "*", "* IRC NICK CHANGE: %s -> %s", origbotname, new);
+        putlog(LOG_MISC, "*", _("* IRC NICK CHANGE: %s -> %s"), origbotname,
+               new);
         nick_juped = 0;
       }
       strncpyz(origbotname, new, NICKLEN);
@@ -1519,30 +1520,33 @@
   get_user_flagrec(u, &fr, 0);
   if (dcc_total == max_dcc && increase_socks_max()) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, DCC_TOOMANYDCCS1);
-    putlog(LOG_MISC, "*", DCC_TOOMANYDCCS2, "CHAT", param, nick, from);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+              _("Sorry, too many DCC connections."));
+    putlog(LOG_MISC, "*", _("DCC connections full: %s %s (%s!%s)"), "CHAT",
+           param, nick, from);
   } else if (!(glob_party(fr) || (!require_p && chan_op(fr)))) {
     if (glob_xfer(fr))
       return 0;                 /* Allow filesys to pick up the chat */
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, DCC_REFUSED2);
-    putlog(LOG_MISC, "*", "%s: %s!%s", DCC_REFUSED, nick, from);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, _("You don't have access"));
+    putlog(LOG_MISC, "*", _("Refused DCC chat: %s!%s (no access)"), nick, from);
   } else if (u_pass_match(u, "-")) {
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s\n", nick, DCC_REFUSED3);
-    putlog(LOG_MISC, "*", "%s: %s!%s", DCC_REFUSED4, nick, from);
+      dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
+              _("You must have a password set."));
+    putlog(LOG_MISC, "*", "Refused DCC chat: %s!%s (no password)", nick, from);
   } else if (atoi(prt) < 1024 || atoi(prt) > 65535) {
     /* Invalid port */
     if (!quiet_reject)
-      dprintf(DP_HELP, "NOTICE %s :%s (invalid port)\n", nick,
-              DCC_CONNECTFAILED1);
-    putlog(LOG_MISC, "*", "%s: CHAT (%s!%s)", DCC_CONNECTFAILED3, nick, from);
+      dprintf(DP_HELP, _("NOTICE %s :%s\n"), nick,
+              _("Failed to connect (invalid port)"));
+    putlog(LOG_MISC, "*", "DCC invalid port: CHAT (%s!%s)", nick, from);
   } else {
     if (!sanitycheck_dcc(nick, from, ip, prt))
       return 1;
     i = new_dcc(&DCC_DNSWAIT, sizeof(struct dns_info));
     if (i < 0) {
-      putlog(LOG_MISC, "*", "DCC connection: CHAT (%s!%s)", nick, ip);
+      putlog(LOG_MISC, "*", _("DCC connection: CHAT (%s!%s)"), nick, ip);
       return 1;
     }
 #ifdef TLS
@@ -1572,7 +1576,7 @@
 
   idx = findanyidx(sock);
   if ((idx >= 0) && dcc_fingerprint(idx))
-    dprintf(idx, "%s\n", DCC_ENTERPASS);
+    dprintf(idx, "%s\n", _("Enter your password."));
   return 0;
 }
 #endif
@@ -1595,13 +1599,13 @@
 #ifdef TLS
   else if (dcc[i].ssl && ssl_handshake(dcc[i].sock, TLS_CONNECT, tls_vfydcc,
                                        LOG_MISC, dcc[i].host, &dcc_chat_sslcb))
-    snprintf(buf, sizeof buf, "TLS negotiation error");
+    snprintf(buf, sizeof buf, _("TLS negotiation error"));
 #endif
   if (buf[0]) {
     if (!quiet_reject)
       dprintf(DP_HELP, "NOTICE %s :%s (%s)\n", dcc[i].nick,
-              DCC_CONNECTFAILED1, buf);
-    putlog(LOG_MISC, "*", "%s: CHAT (%s!%s)", DCC_CONNECTFAILED2,
+              _("Failed to connect"), buf);
+    putlog(LOG_MISC, "*", _("DCC connection failed: CHAT (%s!%s)"),
            dcc[i].nick, dcc[i].host);
     putlog(LOG_MISC, "*", "    (%s)", buf);
     killsock(dcc[i].sock);
@@ -1615,17 +1619,17 @@
     strcpy(dcc[i].u.chat->con_chan, (chanset) ? chanset->dname : "*");
     dcc[i].timeval = now;
     /* Ok, we're satisfied with them now: attempt the connect */
-    putlog(LOG_MISC, "*", "DCC connection: CHAT (%s!%s)", dcc[i].nick,
+    putlog(LOG_MISC, "*", _("DCC connection: CHAT (%s!%s)"), dcc[i].nick,
            dcc[i].host);
 #ifdef TLS
     if (dcc[i].ssl)
     /* Queue something up to make sure the handshake moves on */
-      dprintf(i, "TLS handshake in progress...\n");
+      dprintf(i, _("TLS handshake in progress...\n"));
     else
     /* For SSL connections, the handshake callback will determine
        if we should request a password */
 #endif
-      dprintf(i, "%s\n", DCC_ENTERPASS);
+      dprintf(i, "%s\n", _("Enter your password."));
   }
   return;
 }
@@ -1655,7 +1659,7 @@
 
       disconnect_server(servidx);
       lostdcc(servidx);
-      putlog(LOG_SERV, "*", IRC_SERVERSTONED);
+      putlog(LOG_SERV, "*", _("Server got stoned; jumping..."));
     } else if (!trying_server) {
       /* Check for server being stoned. */
       dprintf(DP_MODE, "PING :%li\n", now);
@@ -1751,18 +1755,18 @@
   int servidx;
 
   if (server_online) {
-    dprintf(idx, "    Online as: %s%s%s (%s)\n", botname, botuserhost[0] ?
+    dprintf(idx, _("    Online as: %s%s%s (%s)\n"), botname, botuserhost[0] ?
             "!" : "", botuserhost[0] ? botuserhost : "", botrealname);
     if (nick_juped)
-      dprintf(idx, "    NICK IS JUPED: %s%s\n", origbotname,
-              keepnick ? " (trying)" : "");
+      dprintf(idx, keepnick ? _("    NICK IS JUPED: %s (trying)\n") :
+              _("    NICK IS JUPED: %s\n"), origbotname);
     daysdur(now, server_online, s1);
-    egg_snprintf(s, sizeof s, "(connected %s)", s1);
+    egg_snprintf(s, sizeof s, _("(connected %s)"), s1);
     if (server_lag && !lastpingcheck) {
       if (server_lag == -1)
-        egg_snprintf(s1, sizeof s1, " (bad pong replies)");
+        egg_snprintf(s1, sizeof s1, _(" (bad pong replies)"));
       else
-        egg_snprintf(s1, sizeof s1, " (lag: %ds)", server_lag);
+        egg_snprintf(s1, sizeof s1, _(" (lag: %ds)"), server_lag);
       strcat(s, s1);
     }
   }
@@ -1770,45 +1774,44 @@
   if ((trying_server || server_online) &&
       ((servidx = findanyidx(serv)) != -1)) {
 #ifdef TLS
-    dprintf(idx, "    Server [%s]:%s%d %s\n", dcc[servidx].host,
-            dcc[servidx].ssl ? "+" : "", dcc[servidx].port, trying_server ?
-            "(trying)" : s);
+    dprintf(idx, trying_server ? _("    Server [%s]:%s%d (trying)\n") :
+            _("    Server [%s]:%s%d %s\n"), dcc[servidx].host,
+            dcc[servidx].ssl ? "+" : "", dcc[servidx].port, s);
 #else
-    dprintf(idx, "    Server [%s]:%d %s\n", dcc[servidx].host,
-            dcc[servidx].port, trying_server ? "(trying)" : s);
+    dprintf(idx, trying_server ? _("    Server [%s]:%d (trying)\n") :
+            _("    Server [%s]:%d %s\n"), dcc[servidx].host,
+            dcc[servidx].port, s);
 #endif
   } else
-    dprintf(idx, "    %s\n", IRC_NOSERVER);
+    dprintf(idx, "    %s\n", _("No server currently."));
 
   if (modeq.tot)
-    dprintf(idx, "    %s %d%% (%d msgs)\n", IRC_MODEQUEUE,
+    dprintf(idx, _("    Mode queue is at %d%% (%d msgs)\n"),
             (int) ((float) (modeq.tot * 100.0) / (float) maxqmsg),
             (int) modeq.tot);
   if (mq.tot)
-    dprintf(idx, "    %s %d%% (%d msgs)\n", IRC_SERVERQUEUE,
+    dprintf(idx, _("    Server queue is at %d%% (%d msgs)\n"),
             (int) ((float) (mq.tot * 100.0) / (float) maxqmsg), (int) mq.tot);
   if (hq.tot)
-    dprintf(idx, "    %s %d%% (%d msgs)\n", IRC_HELPQUEUE,
+    dprintf(idx, _("    Help queue is at %d%% (%d msgs)\n"),
             (int) ((float) (hq.tot * 100.0) / (float) maxqmsg), (int) hq.tot);
 
   if (details) {
     int size = server_expmem();
 
-    if (min_servs)
-      dprintf(idx, "    Requiring a network with at least %d server%s\n",
-              min_servs, (min_servs != 1) ? "s" : "");
+    if (min_servs > 1) /* we can't connect to a network with 0 servers .. */
+      dprintf(idx, _("    Requiring a network with at least %d servers\n"),
+              min_servs);
     if (initserver[0])
-      dprintf(idx, "    On connect, I do: %s\n", initserver);
+      dprintf(idx, _("    On connect, I do: %s\n"), initserver);
     if (connectserver[0])
-      dprintf(idx, "    Before connect, I do: %s\n", connectserver);
-    dprintf(idx, "    Msg flood: %d msg%s/%d second%s\n", flud_thr,
-            (flud_thr != 1) ? "s" : "", flud_time,
-            (flud_time != 1) ? "s" : "");
-    dprintf(idx, "    CTCP flood: %d msg%s/%d second%s\n", flud_ctcp_thr,
-            (flud_ctcp_thr != 1) ? "s" : "", flud_ctcp_time,
-            (flud_ctcp_time != 1) ? "s" : "");
-    dprintf(idx, "    Using %d byte%s of memory\n", size,
-            (size != 1) ? "s" : "");
+      dprintf(idx, _("    Before connect, I do: %s\n"), connectserver);
+    dprintf(idx, _("    Msg flood: %d %s/%d %s\n"), flud_thr, P_("msg", "msgs",
+            flud_thr), flud_time, P_("second", "seconds", flud_time));
+    dprintf(idx, _("    CTCP flood: %d %s/%d %s\n"), flud_ctcp_thr,
+            P_("msg", "msgs", flud_ctcp_thr), flud_ctcp_time,
+            P_("second", "seconds", flud_ctcp_time));
+    dprintf(idx, _("    Using %d bytes of memory\n"), size);
   }
 }
 
@@ -1820,7 +1823,7 @@
 static char *server_close()
 {
   cycle_time = 100;
-  nuke_server("Connection reset by peer");
+  nuke_server(_("Connection reset by peer"));
   clearq(serverlist);
   rem_builtins(H_dcc, C_dcc_serv);
   rem_builtins(H_raw, my_raw_binds);
@@ -1963,7 +1966,7 @@
   lastpingcheck = 0;
   server_online = 0;
   server_cycle_wait = 60;
-  strcpy(botrealname, "A deranged product of evil coders");
+  strcpy(botrealname, _("A deranged product of evil coders"));
   min_servs = 0;
   server_timeout = 60;
   serverlist = NULL;
@@ -2002,7 +2005,7 @@
   module_register(MODULE_NAME, server_table, 1, 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.");
   }
 
   /* Fool bot in reading the values. */
Index: eggdrop1.8/src/mod/server.mod/servmsg.c
diff -u eggdrop1.8/src/mod/server.mod/servmsg.c:1.4 eggdrop1.8/src/mod/server.mod/servmsg.c:1.4.2.1
--- eggdrop1.8/src/mod/server.mod/servmsg.c:1.4	Sun Oct 24 07:22:40 2010
+++ eggdrop1.8/src/mod/server.mod/servmsg.c	Tue Nov 16 08:16:57 2010
@@ -1,7 +1,7 @@
 /*
  * servmsg.c -- part of server.mod
  *
- * $Id: servmsg.c,v 1.4 2010/10/24 13:22:40 pseudo Exp $
+ * $Id: servmsg.c,v 1.4.2.1 2010/11/16 14:16:57 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -84,7 +84,7 @@
     }
     botname[l] = altnick_char;
   }
-  putlog(LOG_MISC, "*", IRC_BOTNICKINUSE, botname);
+  putlog(LOG_MISC, "*", _("NICK IN USE: Trying '%s'"), botname);
   dprintf(DP_MODE, "NICK %s\n", botname);
   return 0;
 }
@@ -297,7 +297,7 @@
     for (i = curserv; i > 0 && x; i--)
       x = x->next;
     if (!x) {
-      putlog(LOG_MISC, "*", "Invalid server list!");
+      putlog(LOG_MISC, "*", _("Invalid server list!"));
     } else {
       if (x->realname)
         nfree(x->realname);
@@ -309,7 +309,7 @@
     realservername = nmalloc(strlen(from) + 1);
     strcpy(realservername, from);
   } else
-    putlog(LOG_MISC, "*", "No server list!");
+    putlog(LOG_MISC, "*", _("No server list!"));
 
   server_online = now;
   fixcolon(msg);
@@ -357,7 +357,7 @@
   if (chan && !channel_inactive(chan)) {
     module_entry *me = module_find("channels", 0, 0);
 
-    putlog(LOG_MISC, chname, IRC_SERVNOTONCHAN, chname);
+    putlog(LOG_MISC, chname, _("Server says I'm not on channel: %s"), chname);
     if (me && me->funcs)
       (me->funcs[CHANNEL_CLEAR]) (chan, 1);
     chan->status &= ~CHAN_ACTIVE;
@@ -459,8 +459,8 @@
     /* Private msg */
     simple_sprintf(h, "*!*@%s", p);
     putlog(LOG_MISC, "*", IRC_FLOODIGNORE1, p);
-    addignore(h, botnetnick, (which == FLOOD_CTCP) ? "CTCP flood" :
-              "MSG/NOTICE flood", now + (60 * ignore_time));
+    addignore(h, botnetnick, (which == FLOOD_CTCP) ? _("CTCP flood") :
+              _("MSG/NOTICE flood"), now + (60 * ignore_time));
   }
   return 0;
 }
@@ -514,7 +514,7 @@
           /* CTCP from oper, don't interpret */
           if ((to[0] == '$') || strchr(to, '.')) {
             if (!ignoring)
-              putlog(LOG_PUBLIC, to, "CTCP %s: %s from %s (%s) to %s",
+              putlog(LOG_PUBLIC, to, _("CTCP %s: %s from %s (%s) to %s"),
                      code, ctcp, nick, uhost, to);
           } else {
             u = get_user_by_host(from);
@@ -529,21 +529,22 @@
                   if (!strcmp(code, "CHAT")) {
                     if (!quiet_reject) {
                       if (u)
-                        dprintf(DP_HELP, "NOTICE %s :I'm not accepting calls "
-                                "at the moment.\n", nick);
+                        dprintf(DP_HELP, _("NOTICE %s :I'm not accepting calls "
+                                "at the moment.\n"), nick);
                       else
                         dprintf(DP_HELP, "NOTICE %s :%s\n", nick,
-                                DCC_NOSTRANGERS);
+                                _("I don't accept DCC chats from strangers."));
                     }
-                    putlog(LOG_MISC, "*", "%s: %s", DCC_REFUSED, from);
+                    putlog(LOG_MISC, "*", _("Refused DCC chat: %s (no access)"),
+                           from);
                   } else
-                    putlog(LOG_MISC, "*", "Refused DCC %s: %s", code, from);
+                    putlog(LOG_MISC, "*", _("Refused DCC %s: %s"), code, from);
                 }
               }
               if (!strcmp(code, "ACTION")) {
-                putlog(LOG_MSGS, "*", "Action to %s: %s %s", to, nick, ctcp);
+                putlog(LOG_MSGS, "*", _("Action to %s: %s %s"), to, nick, ctcp);
               } else {
-                putlog(LOG_MSGS, "*", "CTCP %s: %s from %s (%s)", code, ctcp,
+                putlog(LOG_MSGS, "*", _("CTCP %s: %s from %s (%s)"), code, ctcp,
                        nick, uhost);
               }                 /* I love a good close cascade ;) */
             }
@@ -638,7 +639,7 @@
         if ((to[0] == '$') || strchr(to, '.')) {
           if (!ignoring)
             putlog(LOG_PUBLIC, "*",
-                   "CTCP reply %s: %s from %s (%s) to %s", code, ctcp,
+                   _("CTCP reply %s: %s from %s (%s) to %s"), code, ctcp,
                    nick, uhost, to);
         } else {
           u = get_user_by_host(from);
@@ -647,7 +648,7 @@
             if (!ignoring)
               /* Who cares? */
               putlog(LOG_MSGS, "*",
-                     "CTCP reply %s: %s from %s (%s) to %s",
+                     _("CTCP reply %s: %s from %s (%s) to %s"),
                      code, ctcp, nick, uhost, to);
           }
         }
@@ -711,8 +712,9 @@
                                  * stuff in here :/ */
   i = atoi(servs);
   if (i < min_servs) {
-    putlog(LOG_SERV, "*", IRC_AUTOJUMP, min_servs, i);
-    nuke_server(IRC_CHANGINGSERV);
+    putlog(LOG_SERV, "*", _("Jumping servers (need %d servers, only have %d)"),
+           min_servs, i);
+    nuke_server(_("changing servers"));
   }
   return 0;
 }
@@ -814,10 +816,10 @@
     }
     if (!ison_orig) {
       if (!nick_juped)
-        putlog(LOG_MISC, "*", IRC_GETORIGNICK, origbotname);
+        putlog(LOG_MISC, "*", _("Switching back to nick %s"), origbotname);
       dprintf(DP_SERVER, "NICK %s\n", origbotname);
     } else if (alt[0] && !ison_alt && rfc_casecmp(botname, alt)) {
-      putlog(LOG_MISC, "*", IRC_GETALTNICK, alt);
+      putlog(LOG_MISC, "*", _("Switching back to altnick %s"), alt);
       dprintf(DP_SERVER, "NICK %s\n", alt);
     }
   }
@@ -832,10 +834,10 @@
   newsplit(&msg);
   erroneus = newsplit(&msg);
   if (server_online)
-    putlog(LOG_MISC, "*", "NICK IS INVALID: %s (keeping '%s').", erroneus,
+    putlog(LOG_MISC, "*", _("NICK IS INVALID: %s (keeping '%s')."), erroneus,
            botname);
   else {
-    putlog(LOG_MISC, "*", IRC_BADBOTNICK);
+    putlog(LOG_MISC, "*", _("Server says my nickname is invalid."));
     if (!keepnick) {
       makepass(erroneus);
       erroneus[NICKMAX] = 0;
@@ -857,7 +859,7 @@
     /* We are online and have a nickname, we'll keep it */
     newsplit(&msg);
     tmp = newsplit(&msg);
-    putlog(LOG_MISC, "*", "NICK IN USE: %s (keeping '%s').", tmp, botname);
+    putlog(LOG_MISC, "*", _("NICK IN USE: %s (keeping '%s')."), tmp, botname);
     nick_juped = 0;
     return 0;
   }
@@ -878,21 +880,22 @@
     chan = findchan(s);
     if (chan) {
       if (chan->status & CHAN_ACTIVE) {
-        putlog(LOG_MISC, "*", IRC_CANTCHANGENICK, s);
+        putlog(LOG_MISC, "*", _("Can't change nickname on %s. "
+               "Is my nickname banned?"), s);
       } else {
         if (!channel_juped(chan)) {
-          putlog(LOG_MISC, "*", IRC_CHANNELJUPED, s);
+          putlog(LOG_MISC, "*", _("Channel %s is juped. :("), s);
           chan->status |= CHAN_JUPED;
         }
       }
     }
   } else if (server_online) {
     if (!nick_juped)
-      putlog(LOG_MISC, "*", "NICK IS JUPED: %s (keeping '%s').", s, botname);
+      putlog(LOG_MISC, "*", _("NICK IS JUPED: %s (keeping '%s')."), s, botname);
     if (!rfc_casecmp(s, origbotname))
       nick_juped = 1;
   } else {
-    putlog(LOG_MISC, "*", "%s: %s", IRC_BOTNICKJUPED, s);
+    putlog(LOG_MISC, "*", _("Nickname has been juped: %s"), s);
     gotfake433(from);
   }
   return 0;
@@ -933,10 +936,10 @@
    */
   if (msg[0] == ':')
     msg++;
-  putlog(LOG_SERV | LOG_MSGS, "*", "-ERROR from server- %s", msg);
+  putlog(LOG_SERV | LOG_MSGS, "*", _("-ERROR from server- %s"), msg);
   if (serverror_quit) {
-    putlog(LOG_SERV, "*", "Disconnecting from server.");
-    nuke_server("Bah, stupid error messages.");
+    putlog(LOG_SERV, "*", _("Disconnecting from server."));
+    nuke_server(_("Bah, stupid error messages."));
   }
   return 1;
 }
@@ -955,31 +958,31 @@
     strncpyz(botname, msg, NICKLEN);
     altnick_char = 0;
     if (!strcmp(msg, origbotname)) {
-      putlog(LOG_SERV | LOG_MISC, "*", "Regained nickname '%s'.", msg);
+      putlog(LOG_SERV | LOG_MISC, "*", _("Regained nickname '%s'."), msg);
       nick_juped = 0;
     } else if (alt[0] && !strcmp(msg, alt))
-      putlog(LOG_SERV | LOG_MISC, "*", "Regained alternate nickname '%s'.",
+      putlog(LOG_SERV | LOG_MISC, "*", _("Regained alternate nickname '%s'."),
              msg);
     else if (keepnick && strcmp(nick, msg)) {
-      putlog(LOG_SERV | LOG_MISC, "*", "Nickname changed to '%s'???", msg);
+      putlog(LOG_SERV | LOG_MISC, "*", _("Nickname changed to '%s'???"), msg);
       if (!rfc_casecmp(nick, origbotname)) {
-        putlog(LOG_MISC, "*", IRC_GETORIGNICK, origbotname);
+        putlog(LOG_MISC, "*", _("Switching back to nick %s"), origbotname);
         dprintf(DP_SERVER, "NICK %s\n", origbotname);
       } else if (alt[0] && !rfc_casecmp(nick, alt) &&
                egg_strcasecmp(botname, origbotname)) {
-        putlog(LOG_MISC, "*", IRC_GETALTNICK, alt);
+        putlog(LOG_MISC, "*", _("Switching back to altnick %s"), alt);
         dprintf(DP_SERVER, "NICK %s\n", alt);
       }
     } else
-      putlog(LOG_SERV | LOG_MISC, "*", "Nickname changed to '%s'???", msg);
+      putlog(LOG_SERV | LOG_MISC, "*", _("Nickname changed to '%s'???"), msg);
   } else if ((keepnick) && (rfc_casecmp(nick, msg))) {
     /* Only do the below if there was actual nick change, case doesn't count */
     if (!rfc_casecmp(nick, origbotname)) {
-      putlog(LOG_MISC, "*", IRC_GETORIGNICK, origbotname);
+      putlog(LOG_MISC, "*", _("Switching back to nick %s"), origbotname);
       dprintf(DP_SERVER, "NICK %s\n", origbotname);
     } else if (alt[0] && !rfc_casecmp(nick, alt) &&
              egg_strcasecmp(botname, origbotname)) {
-      putlog(LOG_MISC, "*", IRC_GETALTNICK, altnick);
+      putlog(LOG_MISC, "*", _("Switching back to altnick %s"), altnick);
       dprintf(DP_SERVER, "NICK %s\n", altnick);
     }
   }
@@ -1000,7 +1003,7 @@
         int servidx = findanyidx(serv);
 
         putlog(LOG_MISC | LOG_JOIN, "*",
-               "%s has me i-lined (jumping)", dcc[servidx].host);
+               _("%s has me i-lined (jumping)"), dcc[servidx].host);
         nuke_server("i-lines suck");
       }
     }
@@ -1025,14 +1028,14 @@
 
 static void eof_server(int idx)
 {
-  putlog(LOG_SERV, "*", "%s %s", IRC_DISCONNECTED, dcc[idx].host);
+  putlog(LOG_SERV, "*", _("Disconnected from %s"), dcc[idx].host);
   disconnect_server(idx);
   lostdcc(idx);
 }
 
 static void display_server(int idx, char *buf)
 {
-  sprintf(buf, "%s  (lag: %d)", trying_server ? "conn" : "serv", server_lag);
+  sprintf(buf, _("%s  (lag: %d)"), trying_server ? "conn" : "serv", server_lag);
 }
 
 static void connect_server(void);
@@ -1054,7 +1057,7 @@
 
 static void timeout_server(int idx)
 {
-  putlog(LOG_SERV, "*", "Timeout: connect to %s", dcc[idx].host);
+  putlog(LOG_SERV, "*", _("Timeout: connect to %s"), dcc[idx].host);
   disconnect_server(idx);
   lostdcc(idx);
 }
@@ -1080,7 +1083,7 @@
 
   if (trying_server) {
     strcpy(dcc[idx].nick, "(server)");
-    putlog(LOG_SERV, "*", "Connected to %s", dcc[idx].host);
+    putlog(LOG_SERV, "*", _("Connected to %s"), dcc[idx].host);
     trying_server = 0;
     SERVER_SOCKET.timeout_val = 0;
   }
@@ -1122,7 +1125,7 @@
   if (use_penalties) {
     last_time += 2;
     if (raw_log)
-      putlog(LOG_SRVOUT, "*", "adding 2secs penalty (successful kick)");
+      putlog(LOG_SRVOUT, "*", _("adding 2secs penalty (successful kick)"));
   }
   return 0;
 }
@@ -1137,7 +1140,7 @@
     last_time += 1;
 
     if (raw_log)
-      putlog(LOG_SRVOUT, "*", "adding 1sec penalty (remote whois)");
+      putlog(LOG_SRVOUT, "*", _("adding 1sec penalty (remote whois)"));
   }
 
   return 0;
@@ -1172,9 +1175,9 @@
 
   fixcolon(msg);
 
-  putlog(LOG_SERV, "*", "Server (%s) says I'm banned: %s", from, msg);
-  putlog(LOG_SERV, "*", "Disconnecting from server.");
-  nuke_server("Banned from server.");
+  putlog(LOG_SERV, "*", _("Server (%s) says I'm banned: %s"), from, msg);
+  putlog(LOG_SERV, "*", _("Disconnecting from server."));
+  nuke_server(_("Banned from server."));
   return 1;
 }
 
@@ -1238,7 +1241,7 @@
     struct server_list *x = serverlist;
 
     if (!x && !botserverport) {
-      putlog(LOG_SERV, "*", "No servers in server list");
+      putlog(LOG_SERV, "*", _("No servers in server list"));
       cycle_time = 300;
       return;
     }
@@ -1246,7 +1249,7 @@
     servidx = new_dcc(&DCC_DNSWAIT, sizeof(struct dns_info));
     if (servidx < 0) {
       putlog(LOG_SERV, "*",
-             "NO MORE DCC CONNECTIONS -- Can't create server connection.");
+             _("NO MORE DCC CONNECTIONS -- Can't create server connection."));
       return;
     }
 
@@ -1255,15 +1258,14 @@
     check_tcl_event("connect-server");
     next_server(&curserv, botserver, &botserverport, pass);
 #ifdef TLS
-    putlog(LOG_SERV, "*", "%s [%s]:%s%d", IRC_SERVERTRY, botserver,
+    putlog(LOG_SERV, "*", _("Trying server [%s]:%s%d"), botserver,
            use_ssl ? "+" : "", botserverport);
     dcc[servidx].ssl = use_ssl;
 #else
-    putlog(LOG_SERV, "*", "%s [%s]:%d", IRC_SERVERTRY, botserver,
-           botserverport);
+    putlog(LOG_SERV, "*", _("Trying server [%s]:%d"), botserver, botserverport);
 #endif
     dcc[servidx].port = botserverport;
-    strcpy(dcc[servidx].nick, "(server)");
+    strcpy(dcc[servidx].nick, _("(server)"));
     strncpyz(dcc[servidx].host, botserver, UHOSTLEN);
 
     botuserhost[0] = 0;
@@ -1302,8 +1304,8 @@
 {
   serv = -1;
   resolvserv = 0;
-  putlog(LOG_SERV, "*", "%s %s (%s)", IRC_FAILEDCONNECT, dcc[servidx].host,
-         IRC_DNSFAILED);
+  putlog(LOG_SERV, "*", _("Failed connect to %s (DNS lookup failed)"),
+         dcc[servidx].host);
   lostdcc(servidx);
 }
 
@@ -1321,11 +1323,11 @@
   if (serv < 0 || (dcc[servidx].ssl &&
       ssl_handshake(serv, TLS_CONNECT, tls_vfyserver, LOG_SERV,
                     dcc[servidx].host, NULL))) {
-    putlog(LOG_SERV, "*", "%s %s (%s)", IRC_FAILEDCONNECT, dcc[servidx].host,
-           serv ? "TLS negotiation failure" : strerror(errno));
+    putlog(LOG_SERV, "*", _("Failed connect to %s (%s)"), dcc[servidx].host,
+           serv ? _("TLS negotiation failure") : strerror(errno));
 #else
   if (serv < 0) {
-    putlog(LOG_SERV, "*", "%s %s (%s)", IRC_FAILEDCONNECT, dcc[servidx].host,
+    putlog(LOG_SERV, "*", _("Failed connect to %s (%s)"), dcc[servidx].host,
            strerror(errno));
 #endif
     lostdcc(servidx);
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.2.1 eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang:1.1.1.1.2.2
--- eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang:1.1.1.1.2.1	Thu Nov 11 14:34:47 2010
+++ eggdrop1.8/src/mod/transfer.mod/language/transfer.english.lang	Tue Nov 16 08:16:57 2010
@@ -1,7 +1,7 @@
 # transfer.english.lang
 #   language messages for transfer module
 #
-# $Id: transfer.english.lang,v 1.1.1.1.2.1 2010/11/11 20:34:47 pseudo Exp $
+# $Id: transfer.english.lang,v 1.1.1.1.2.2 2010/11/16 14:16:57 pseudo Exp $
 
 0xf00,Refused dcc get %s: copy to %s FAILED!
 0xf01,NOTICE %s :File system is broken; aborting queued files.\n
@@ -34,7 +34,6 @@
 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/patch.h
diff -u eggdrop1.8/src/patch.h:1.25.2.5 eggdrop1.8/src/patch.h:1.25.2.6
--- eggdrop1.8/src/patch.h:1.25.2.5	Thu Nov 11 14:34:47 2010
+++ eggdrop1.8/src/patch.h	Tue Nov 16 08:16:56 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.5 2010/11/11 20:34:47 pseudo Exp $
+ * $Id: patch.h,v 1.25.2.6 2010/11/16 14:16:56 pseudo Exp $
  */
 /*
  * Copyright (C) 1997 Robey Pointer
@@ -41,12 +41,12 @@
  *
  *
  */
-patch("1289507507");            /* current unixtime */
+patch("1289916505");            /* current unixtime */
 /*
  *
  *
  */
-patch("lang2gettext-mod2");
+patch("lang2gettext");
 /*
  *
  *
----------------------- End of diff -----------------------


More information about the Changes mailing list