Bläddra i källkod

Add gettext-support to dselect

Wichert Akkerman 27 år sedan
förälder
incheckning
2870d23795
19 ändrade filer med 2207 tillägg och 624 borttagningar
  1. 9 5
      ChangeLog
  2. 1 0
      debian/changelog
  3. 8 8
      dselect/basecmds.cc
  4. 27 27
      dselect/baselist.cc
  5. 35 35
      dselect/bindings.cc
  6. 38 33
      dselect/main.cc
  7. 21 21
      dselect/methlist.cc
  8. 25 25
      dselect/method.cc
  9. 43 43
      dselect/methparse.cc
  10. 5 5
      dselect/pkgcmds.cc
  11. 26 26
      dselect/pkgdepcon.cc
  12. 95 59
      dselect/pkgdisplay.cc
  13. 15 15
      dselect/pkginfo.cc
  14. 18 18
      dselect/pkglist.cc
  15. 19 19
      dselect/pkgsublist.cc
  16. 28 28
      dselect/pkgtop.cc
  17. 1 0
      po/.cvsignore
  18. 16 0
      po/POTFILES.in
  19. 1777 257
      po/dpkg.pot

+ 9 - 5
ChangeLog

@@ -1,3 +1,7 @@
+Mon Oct 25 17:12:34 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
+
+  * gettextize dselect
+
 Mon Oct 25 08:42:52 EDT 1999 Ben Collins <bcollins.debian.org>
 
   * debian/rules: fix symlink creaton for /usr/share/doc/dpkg-dev -> dpkg,
@@ -11,6 +15,11 @@ Mon Oct 25 06:50:17 EDT 1999 Ben Collins <bcollins.debian.org>
     squeez the full path to < 30 chars (even if the basename is > than 30
     chars)
 
+Mon Oct 25 02:27:49 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
+
+  * dselect/main.cc: Fixup error message for invalid parameter to reflect
+    we are dselect, not dpkg
+
 Sun Oct 24 20:46:44 EDT 1999 Ben Collins <bcollins.debian.org>
 
   * scripts/dpkg-source.pl: we want to 'delete' the POSIXLY_CORRECT env
@@ -21,11 +30,6 @@ Sun Oct 24 20:25:11 EDT 1999 Ben Collins <bcollins.debian.org>
   * debian/dpkg-doc-{postrm,prerm}: Added install-info for internals.info
   * debian/dpkg-internals: fixed misplaced description
 
-Mon Oct 25 02:27:49 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
-
-  * dselect/main.cc: Fixup error message for invalid parameter to reflect
-    we are dselect, not dpkg
-
 Sun Oct 24 11:39:21 EDT 1999 Ben Collins <bcollins.debian.org>
 
   * debian/control: added dpkg-doc

+ 1 - 0
debian/changelog

@@ -1,5 +1,6 @@
 dpkg (1.4.1.19) unstable; urgency=low
 
+  * Add gettext-support to dselect
   * Fixed incorrect patch for --print-architecture (oops, oh well
     it was already broken when there was no gcc anyway :)
   * Fixed missing mipseb that was supposed to be in the archtable

+ 8 - 8
dselect/basecmds.cc

@@ -86,7 +86,7 @@ void baselist::kd_redraw() {
 //  RFSH(whatinfowin); /* fixme-ncurses: why does ncurses need this ? */
   clearok(curscr,TRUE);
   redrawall();
-  if (debug) fprintf(debug,"baselist[%p]::kd_redraw() done\n",this);
+  if (debug) fprintf(debug,_("baselist[%p]::kd_redraw() done\n"),this);
 }
 
 void baselist::kd_searchagain() {
@@ -96,7 +96,7 @@ void baselist::kd_searchagain() {
 
 void baselist::kd_search() {
   werase(querywin);
-  mvwaddstr(querywin,0,0, "Search for ? ");
+  mvwaddstr(querywin,0,0, _("Search for ? "));
   echo(); /* fixme: ncurses documentation or implementation */
   /* fixme: make / RET do `search again' and / DEL to abort */
   if (wgetnstr(querywin,searchstring,sizeof(searchstring)-1) == ERR)
@@ -123,13 +123,13 @@ void baselist::displayhelp(const struct helpmenuentry *helpmenu, int key) {
       attrset(list_attr);
       mvaddstr(1,0, hme->msg->text);
       attrset(title_attr);
-      mvaddstr(0,0, "Help: ");
+      mvaddstr(0,0, _("Help: "));
       addstr(hme->msg->title);
       getyx(stdscr,y,x);
       while (++x<maxx) addch(' ');
       attrset(thisstate_attr);
       mvaddstr(maxy-1,0,
-"? = help menu    Space = exit help    . = next help    or a help page key "
+_("? = help menu    Space = exit help    . = next help    or a help page key ")
                );
       getyx(stdscr,y,x);
       while (++x<maxx) addch(' ');
@@ -137,7 +137,7 @@ void baselist::displayhelp(const struct helpmenuentry *helpmenu, int key) {
       attrset(A_NORMAL);
       nextkey= hme[1].key;
     } else {
-      mvaddstr(1,1, "Help information is available under the following topics:");
+      mvaddstr(1,1, _("Help information is available under the following topics:"));
       for (i=0, hme=helpmenu; hme->key; hme++,i++) {
         attrset(A_BOLD);
         mvaddch(i+3,3, hme->key);
@@ -145,13 +145,13 @@ void baselist::displayhelp(const struct helpmenuentry *helpmenu, int key) {
         mvaddstr(i+3,6, hme->msg->title);
       }
       mvaddstr(i+4,1,
-               "Press a key from the list above, Space to exit help,\n"
-               "  or `.' (full stop) to read each help page in turn. ");
+               _("Press a key from the list above, Space to exit help,\n"
+               "  or `.' (full stop) to read each help page in turn. "));
       nextkey= helpmenu[0].key;
     }
     refresh();
     key= getch();
-    if (key == EOF) ohshite("error reading keyboard in help");
+    if (key == EOF) ohshite(_("error reading keyboard in help"));
     if (key == ' ') {
       break;
     } else if (key == '?') {

+ 27 - 27
dselect/baselist.cc

@@ -49,16 +49,16 @@ void baselist::sigwinchhandler(int) {
   p->enddisplay();
   endwin(); initscr();
   p->startdisplay();
-  if (doupdate() == ERR) ohshite("doupdate in SIGWINCH handler failed");
+  if (doupdate() == ERR) ohshite(_("doupdate in SIGWINCH handler failed"));
 }
 
 static void cu_sigwinch(int, void **argv) {
   struct sigaction *osigactp= (struct sigaction*)argv[0];
   sigset_t *oblockedp= (sigset_t*)argv[1];
   
-  if (sigaction(SIGWINCH,osigactp,0)) ohshite("failed to restore old SIGWINCH sigact");
+  if (sigaction(SIGWINCH,osigactp,0)) ohshite(_("failed to restore old SIGWINCH sigact"));
   delete osigactp;
-  if (sigprocmask(SIG_SETMASK,oblockedp,0)) ohshite("failed to restore old signal mask");
+  if (sigprocmask(SIG_SETMASK,oblockedp,0)) ohshite(_("failed to restore old signal mask"));
   delete oblockedp;
 } 
 
@@ -68,17 +68,17 @@ void baselist::setupsigwinch() {
     
   osigactp= new(struct sigaction);
   oblockedp= new(sigset_t);
-  if (sigprocmask(0,0,oblockedp)) ohshite("failed to get old signal mask");
-  if (sigaction(SIGWINCH,0,osigactp)) ohshite("failed to get old SIGWINCH sigact");
+  if (sigprocmask(0,0,oblockedp)) ohshite(_("failed to get old signal mask"));
+  if (sigaction(SIGWINCH,0,osigactp)) ohshite(_("failed to get old SIGWINCH sigact"));
 
   push_cleanup(cu_sigwinch,~0, 0,0, 2,(void*)osigactp,(void*)oblockedp);
 
-  if (sigprocmask(SIG_BLOCK,&sigwinchset,0)) ohshite("failed to block SIGWINCH");
+  if (sigprocmask(SIG_BLOCK,&sigwinchset,0)) ohshite(_("failed to block SIGWINCH"));
   memset(&nsigact,0,sizeof(nsigact));
   nsigact.sa_handler= sigwinchhandler;
   sigemptyset(&nsigact.sa_mask);
   nsigact.sa_flags= SA_INTERRUPT;
-  if (sigaction(SIGWINCH,&nsigact,0)) ohshite("failed to set new SIGWINCH sigact");
+  if (sigaction(SIGWINCH,&nsigact,0)) ohshite(_("failed to set new SIGWINCH sigact"));
 }
 
 void baselist::setheights() {
@@ -105,7 +105,7 @@ void baselist::setheights() {
 }
 
 void baselist::startdisplay() {
-  if (debug) fprintf(debug,"baselist[%p]::startdisplay()\n",this);
+  if (debug) fprintf(debug,_("baselist[%p]::startdisplay()\n"),this);
   cbreak(); noecho(); nonl(); keypad(stdscr,TRUE);
   clear(); wnoutrefresh(stdscr);
 
@@ -114,7 +114,7 @@ void baselist::startdisplay() {
     if (init_pair(1,COLOR_WHITE,COLOR_BLACK) != OK ||
         init_pair(2,COLOR_WHITE,COLOR_RED) != OK ||
         init_pair(3,COLOR_WHITE,COLOR_BLUE) != OK)
-      ohshite("failed to allocate colour pairs");
+      ohshite(_("failed to allocate colour pairs"));
     list_attr= COLOR_PAIR(1);
     listsel_attr= list_attr|A_REVERSE;
     title_attr= COLOR_PAIR(2);
@@ -144,30 +144,30 @@ void baselist::startdisplay() {
   setwidths();
   
   titlewin= newwin(1,xmax, 0,0);
-  if (!titlewin) ohshite("failed to create title window");
+  if (!titlewin) ohshite(_("failed to create title window"));
   wattrset(titlewin,title_attr);
   
   whatinfowin= newwin(1,xmax, whatinfo_row,0);
-  if (!whatinfowin) ohshite("failed to create whatinfo window");
+  if (!whatinfowin) ohshite(_("failed to create whatinfo window"));
   wattrset(whatinfowin,whatinfo_attr);
   
   listpad= newpad(nitems+1, total_width);
-  if (!listpad) ohshite("failed to create baselist pad");
+  if (!listpad) ohshite(_("failed to create baselist pad"));
   
   colheadspad= newpad(1, total_width);
-  if (!colheadspad) ohshite("failed to create heading pad");
+  if (!colheadspad) ohshite(_("failed to create heading pad"));
   wattrset(colheadspad,colheads_attr);
   
   thisstatepad= newpad(1, total_width);
-  if (!thisstatepad) ohshite("failed to create thisstate pad");
+  if (!thisstatepad) ohshite(_("failed to create thisstate pad"));
   wattrset(thisstatepad,thisstate_attr);
 
   infopad= newpad(MAX_DISPLAY_INFO, total_width);
-  if (!infopad) ohshite("failed to create info pad");
+  if (!infopad) ohshite(_("failed to create info pad"));
   wattrset(infopad,info_attr);
 
   querywin= newwin(1,xmax,ymax-1,0);
-  if (!querywin) ohshite("failed to create query window");
+  if (!querywin) ohshite(_("failed to create query window"));
 
   if (cursorline >= topofscreen + list_height) topofscreen= cursorline;
   if (topofscreen > nitems - list_height) topofscreen= nitems - list_height;
@@ -179,12 +179,12 @@ void baselist::startdisplay() {
 
   if (debug)
     fprintf(debug,
-            "baselist::startdisplay() done ...\n\n"
+            _("baselist::startdisplay() done ...\n\n"
             " xmax=%d, ymax=%d;\n\n"
             " title_height=%d, colheads_height=%d, list_height=%d;\n"
             " thisstate_height=%d, info_height=%d, whatinfo_height=%d;\n\n"
             " colheads_row=%d, thisstate_row=%d, info_row=%d;\n"
-            " whatinfo_row=%d, list_row=%d;\n\n",
+            " whatinfo_row=%d, list_row=%d;\n\n"),
             xmax, ymax,
             title_height, colheads_height, list_height,
             thisstate_height, info_height, whatinfo_height,
@@ -220,7 +220,7 @@ void baselist::redraw1item(int index) {
 
 baselist::baselist(keybindings *kb) {
   if (debug)
-    fprintf(debug,"baselist[%p]::baselist()\n",this);
+    fprintf(debug,_("baselist[%p]::baselist()\n"),this);
 
   bindings= kb;
   nitems= 0;
@@ -235,7 +235,7 @@ baselist::baselist(keybindings *kb) {
 }  
 
 void baselist::itd_keys() {
-  whatinfovb("keybindings");
+  whatinfovb(_("keybindings"));
   
   const int givek= xmax/3;
   bindings->describestart();
@@ -243,7 +243,7 @@ void baselist::itd_keys() {
   while ((ta= bindings->describenext()) != 0) {
     const char **tap= ta+1;
     for (;;) {
-      waddstr(infopad, *tap);
+      waddstr(infopad, gettext(*tap));
       tap++;  if (!*tap) break;
       waddstr(infopad, ", ");
     }
@@ -258,7 +258,7 @@ void baselist::itd_keys() {
 void baselist::dosearch() {
   int offset, index, searchlen;
   searchlen= strlen(searchstring);
-  if (debug) fprintf(debug,"packagelist[%p]::dosearch(); searchstring=`%s' len=%d\n",
+  if (debug) fprintf(debug,_("packagelist[%p]::dosearch(); searchstring=`%s' len=%d\n"),
                      this,searchstring,searchlen);
   for (offset=1, index=greaterint(topofscreen,cursorline+1);
        offset<nitems;
@@ -290,14 +290,14 @@ void baselist::refreshinfo() {
     mywerase(whatinfowin);
     mvwaddstr(whatinfowin,0,0, whatinfovb.string());
     if (infolines > info_height) {
-      wprintw(whatinfowin,"  -- %d%%, press ",
+      wprintw(whatinfowin,_("  -- %d%%, press "),
               (int)((infotopofscreen + info_height) * 100.0 / infolines));
       if (infotopofscreen + info_height < infolines) {
-        wprintw(whatinfowin,"%s for more", bindings->find("iscrollon"));
+        wprintw(whatinfowin,_("%s for more"), bindings->find("iscrollon"));
         if (infotopofscreen) waddstr(whatinfowin, ", ");
       }
       if (infotopofscreen)
-        wprintw(whatinfowin, "%s to go back",bindings->find("iscrollback"));
+        wprintw(whatinfowin, _("%s to go back"),bindings->find("iscrollback"));
       waddch(whatinfowin,'.');
     }
     wnoutrefresh(whatinfowin);
@@ -306,7 +306,7 @@ void baselist::refreshinfo() {
 
 void baselist::wordwrapinfo(int offset, const char *m) {
   int usemax= xmax-5;
-  if (debug) fprintf(debug,"baselist[%p]::wordwrapinfo(%d, `%s')\n",this,offset,m);
+  if (debug) fprintf(debug,_("baselist[%p]::wordwrapinfo(%d, `%s')\n"),this,offset,m);
   int wrapping=0;
   for (;;) {
     int offleft=offset; while (*m == ' ' && offleft>0) { m++; offleft--; }
@@ -352,7 +352,7 @@ void baselist::wordwrapinfo(int offset, const char *m) {
     if (!p) break;
     m= ++p;
   }
-  if (debug) fprintf(debug,"baselist[%p]::wordwrapinfo() done\n",this);
+  if (debug) fprintf(debug,_("baselist[%p]::wordwrapinfo() done\n"),this);
 }
 
 baselist::~baselist() { }

+ 35 - 35
dselect/bindings.cc

@@ -68,11 +68,11 @@ int keybindings::bind(int key, const char *action) {
 const char *keybindings::find(const char *action) {
   binding *b;
   for (b=bindings; b && strcmp(action,b->interp->action); b=b->next);
-  if (!b) return "[not bound]";
+  if (!b) return _("[not bound]");
   const char *n= key2name(b->key);
   if (n) return n;
   static char buf[50];
-  sprintf(buf,"[unk: %d]",b->key);
+  sprintf(buf,_("[unk: %d]"),b->key);
   return buf;
 }
 
@@ -126,41 +126,41 @@ keybindings::~keybindings() {
 
 const keybindings::description keybindings::descriptions[]= {
   // Actions which apply to both types of list.
-  { "iscrollon",       "Scroll onwards through help/information"               },
-  { "iscrollback",     "Scroll backwards through help/information"             },
-  { "up",              "Move up"                                               },
-  { "down",            "Move down"                                             },
-  { "top",             "Go to top of list"                                     },
-  { "bottom",          "Go to end of list"                                     },
-  { "help",            "Request help (cycle through help screens)"             },
-  { "info",            "Cycle through information displays"                    },
-  { "redraw",          "Redraw display"                                        },
-  { "scrollon1",       "Scroll onwards through list by 1 line"                 },
-  { "scrollback1",     "Scroll backwards through list by 1 line"               },
-  { "iscrollon1",      "Scroll onwards through help/information by 1 line"     },
-  { "iscrollback1",    "Scroll backwards through help/information by 1 line"   },
-  { "scrollon",        "Scroll onwards through list"                           },
-  { "scrollback",      "Scroll backwards through list"                         },
+  { "iscrollon",       N_("Scroll onwards through help/information")             },
+  { "iscrollback",     N_("Scroll backwards through help/information")           },
+  { "up",              N_("Move up")                                             },
+  { "down",            N_("Move down")                                           },
+  { "top",             N_("Go to top of list")                                   },
+  { "bottom",          N_("Go to end of list")                                   },
+  { "help",            N_("Request help (cycle through help screens)")           },
+  { "info",            N_("Cycle through information displays")                  },
+  { "redraw",          N_("Redraw display")                                      },
+  { "scrollon1",       N_("Scroll onwards through list by 1 line")               },
+  { "scrollback1",     N_("Scroll backwards through list by 1 line")             },
+  { "iscrollon1",      N_("Scroll onwards through help/information by 1 line")   },
+  { "iscrollback1",    N_("Scroll backwards through help/information by 1 line") },
+  { "scrollon",        N_("Scroll onwards through list")                         },
+  { "scrollback",      N_("Scroll backwards through list")                       },
 
   // Actions which apply only to lists of packages.
-  { "install",         "Mark package(s) for installation"                      },
-  { "remove",          "Mark package(s) for deinstallation"                    },
-  { "purge",           "Mark package(s) for deinstall and purge"               },
-  { "morespecific",    "Make highlight more specific"                          },
-  { "lessspecific",    "Make highlight less specific"                          },
-  { "search",          "Search for a package whose name contains a string"     },
-  { "searchagain",     "Repeat last search."                                   },
-  { "swaporder",       "Swap sort order priority/section"                      },
-  { "quitcheck",       "Quit, confirming, and checking dependencies"           },
-  { "quitnocheck",     "Quit, confirming without check"                        },
-  { "quitrejectsug",   "Quit, rejecting conflict/dependency suggestions"       },
-  { "abortnocheck",    "Abort - quit without making changes"                   },
-  { "revert",          "Revert to old state for all packages"                  },
-  { "revertsuggest",   "Revert to suggested state for all packages"            },
-  { "revertdirect",    "Revert to directly requested state for all packages"   },
+  { "install",         N_("Mark package(s) for installation")                    },
+  { "remove",          N_("Mark package(s) for deinstallation")                  },
+  { "purge",           N_("Mark package(s) for deinstall and purge")             },
+  { "morespecific",    N_("Make highlight more specific")                        },
+  { "lessspecific",    N_("Make highlight less specific")                        },
+  { "search",          N_("Search for a package whose name contains a string")   },
+  { "searchagain",     N_("Repeat last search.")                                 },
+  { "swaporder",       N_("Swap sort order priority/section")                    },
+  { "quitcheck",       N_("Quit, confirming, and checking dependencies")         },
+  { "quitnocheck",     N_("Quit, confirming without check")                      },
+  { "quitrejectsug",   N_("Quit, rejecting conflict/dependency suggestions")     },
+  { "abortnocheck",    N_("Abort - quit without making changes")                 },
+  { "revert",          N_("Revert to old state for all packages")                },
+  { "revertsuggest",   N_("Revert to suggested state for all packages")          },
+  { "revertdirect",    N_("Revert to directly requested state for all packages") },
   
   // Actions which apply only to lists of methods.
-  { "select-and-quit", "Select currently-highlighted access method"            },
-  { "abort",           "Quit without changing selected access method"          },
-  {  0,                0                                                       }
+  { "select-and-quit", N_("Select currently-highlighted access method")          },
+  { "abort",           N_("Quit without changing selected access method")        },
+  {  0,                0                                                         }
 };

+ 38 - 33
dselect/main.cc

@@ -48,7 +48,7 @@ extern "C" {
 #include "pkglist.h"
 
 const char thisname[]= DSELECT;
-const char printforhelp[]= "Type " DSELECT " --help for help.";
+const char printforhelp[]= N_("Type " DSELECT " --help for help.");
 
 modstatdb_rw readwrite;
 const char *admindir= ADMINDIR;
@@ -63,36 +63,36 @@ struct menuentry {
 };
 
 static const menuentry menuentries[]= {
-  { "access",  "Choose the access method to use.",                &urq_setup   },
-  { "update",  "Update list of available packages, if possible.", &urq_update  },
-  { "select",  "Request which packages you want on your system.", &urq_list    },
-  { "install", "Install and upgrade wanted packages.",            &urq_install },
-  { "config",  "Configure any packages that are unconfigured.",   &urq_config  },
-  { "remove",  "Remove unwanted software.",                       &urq_remove  },
-  { "quit",    "Quit dselect.",                                   &urq_quit    },
-  { "menu",     0,                                                &urq_menu    },
-  {  0                                                                         }
+  { N_("access"),  N_("Choose the access method to use."),                &urq_setup   },
+  { N_("update"),  N_("Update list of available packages, if possible."), &urq_update  },
+  { N_("select"),  N_("Request which packages you want on your system."), &urq_list    },
+  { N_("install"), N_("Install and upgrade wanted packages."),            &urq_install },
+  { N_("config"),  N_("Configure any packages that are unconfigured."),   &urq_config  },
+  { N_("remove"),  N_("Remove unwanted software."),                       &urq_remove  },
+  { N_("quit"),    N_("Quit dselect."),                                   &urq_quit    },
+  { N_("menu"),    0,                                                     &urq_menu    },
+  { 0                                                                              }
 };
 
 static const char programdesc[]=
-      "Debian Linux `" DSELECT "' package handling frontend.";
+      N_("Debian Linux `" DSELECT "' package handling frontend.");
 
-static const char copyrightstring[]=
+static const char copyrightstring[]= N_(
       "Version " DPKG_VERSION_ARCH ".  Copyright (C) 1994-1996 Ian Jackson.   This is\n"
       "free software; see the GNU General Public Licence version 2 or later for\n"
-      "copying conditions.  There is NO warranty.  See dselect --licence for details.\n";
+      "copying conditions.  There is NO warranty.  See dselect --licence for details.\n");
 
 static void printversion(void) {
-  if (fprintf(stdout,"%s\n%s",programdesc,copyrightstring) == EOF) werr("stdout");
+  if (fprintf(stdout,"%s\n%s",gettext(programdesc),gettext(copyrightstring)) == EOF) werr("stdout");
 }
 
 static void usage(void) {
-  if (!fputs
-      ("Usage: dselect [options]\n"
+  if (!fputs(
+     _("Usage: dselect [options]\n"
        "       dselect [options] action ...\n"
        "Options:  --admindir <directory>  (default is /var/lib/dpkg)\n"
        "          --help  --version  --licence   --debug <file> | -D<file> | -D\n"
-       "Actions:  access update select install config remove quit menu\n",
+       "Actions:  access update select install config remove quit menu\n"),
        stdout)) werr("stdout");
 }
 
@@ -134,7 +134,7 @@ extern "C" {
 
   static void setdebug(const struct cmdinfo*, const char *v) {
     debug= fopen(v,"a");
-    if (!debug) ohshite("couldn't open debug file `%.255s'\n",v);
+    if (!debug) ohshite(_("couldn't open debug file `%.255s'\n"),v);
     setvbuf(debug,0,_IONBF,0);
   }
 
@@ -160,12 +160,12 @@ void curseson() {
     if (!cup || !smso) {
       endwin();
       if (!cup)
-        fputs("Terminal does not appear to support cursor addressing.\n",stderr);
+        fputs(_("Terminal does not appear to support cursor addressing.\n"),stderr);
       if (!smso)
-        fputs("Terminal does not appear to support highlighting.\n",stderr);
-      fputs("Set your TERM variable correctly, use a better terminal,\n"
-            "or make do with the per-package management tool " DPKG ".\n",stderr);
-      ohshit("terminal lacks necessary features, giving up");
+        fputs(_("Terminal does not appear to support highlighting.\n"),stderr);
+      fputs(_("Set your TERM variable correctly, use a better terminal,\n"
+            "or make do with the per-package management tool " DPKG ".\n"),stderr);
+      ohshit(_("terminal lacks necessary features, giving up"));
     }
   }
   cursesareon= 1;
@@ -209,10 +209,11 @@ urqresult urq_list(void) {
 void dme(int i, int so) {
   char buf[120];
   const menuentry *me= &menuentries[i];
+  const char* option = gettext(me->option);
   sprintf(buf," %c %d. [%c]%-10.10s %-80.80s ",
           so ? '*' : ' ', i,
-          toupper(me->option[0]), me->option+1,
-          me->menuent);
+          toupper(option[0]), option+1,
+          gettext(me->menuent));
   
   int y,x;
   getmaxyx(stdscr,y,x);
@@ -230,7 +231,7 @@ int refreshmenu(void) {
 
   clear();
   attrset(A_BOLD);
-  mvaddnstr(0,0, programdesc,x-1);
+  mvaddnstr(0,0, gettext(programdesc),x-1);
 
   attrset(A_NORMAL);
   const struct menuentry *mep; int i;
@@ -238,12 +239,12 @@ int refreshmenu(void) {
     dme(i,0);
 
   attrset(A_BOLD);
-  addstr("\n\n"
+  addstr(_("\n\n"
          "Use ^P and ^N, cursor keys, initial letters, or digits to select;\n"
-         "Press ENTER to confirm selection.   ^L to redraw screen.\n\n");
+         "Press ENTER to confirm selection.   ^L to redraw screen.\n\n"));
 
   attrset(A_NORMAL);
-  addstr(copyrightstring);
+  addstr(gettext(copyrightstring));
 
   return i;
 }
@@ -256,7 +257,7 @@ urqresult urq_menu(void) {
   dme(0,1);
   for (;;) {
     refresh();
-    c= getch();  if (c==ERR) ohshite("failed to getch in main menu");
+    c= getch();  if (c==ERR) ohshite(_("failed to getch in main menu"));
     if (c==C('n') || c==KEY_DOWN || c==' ') {
       dme(cursor,0); cursor++; cursor %= entries; dme(cursor,1);
     } else if (c==C('p') || c==KEY_UP || c==C('h') ||
@@ -272,7 +273,7 @@ urqresult urq_menu(void) {
       case urqr_fail:
         break;
       default:
-        internerr("unknown menufn");
+        internerr(_("unknown menufn"));
       }
       refreshmenu(); dme(cursor,1);
     } else if (c==C('l')) {
@@ -286,7 +287,7 @@ urqresult urq_menu(void) {
       }
     } else if (isalpha(c)) {
       c= tolower(c);
-      for (i=0; i<entries && menuentries[i].option[0] != c; i++);
+      for (i=0; i<entries && gettext(menuentries[i].option)[0] != c; i++);
       if (i < entries) {
         dme(cursor,0); cursor=i; dme(cursor,1);
       } else {
@@ -306,6 +307,10 @@ urqresult urq_quit(void) {
 int main(int, const char *const *argv) {
   jmp_buf ejbuf;
 
+  setlocale(LC_ALL, "");
+  bindtextdomain(PACKAGE, LOCALEDIR);
+  textdomain(PACKAGE);
+
 #if CAN_RESIZE
   (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
 #endif
@@ -323,7 +328,7 @@ int main(int, const char *const *argv) {
     while ((a= *argv++) != 0) {
       const menuentry *me;
       for (me= menuentries; me->option && strcmp(me->option,a); me++);
-      if (!me->option) badusage("unknown action string `%.50s'",a);
+      if (!me->option) badusage(_("unknown action string `%.50s'"),a);
       me->fn();
     }
   } else {

+ 21 - 21
dselect/methlist.cc

@@ -44,13 +44,13 @@ const char *methodlist::itemname(int index) {
 void methodlist::kd_abort() { }
 
 void methodlist::kd_quit() {
-  if (debug) fprintf(debug,"methodlist[%p]::kd_quit() setting coption=%p\n",
+  if (debug) fprintf(debug,_("methodlist[%p]::kd_quit() setting coption=%p\n"),
                      this, table[cursorline]);
   coption= table[cursorline];
 }
 
 void methodlist::setwidths() {
-  if (debug) fprintf(debug,"methodlist[%p]::setwidths()\n",this);
+  if (debug) fprintf(debug,_("methodlist[%p]::setwidths()\n"),this);
 
   status_width= 1;
   gap_width= 1;
@@ -65,7 +65,7 @@ void methodlist::setwidths() {
 void methodlist::redrawtitle() {
   if (title_height) {
     mywerase(titlewin);
-    mvwaddnstr(titlewin,0,0,"dselect - list of access methods",xmax);
+    mvwaddnstr(titlewin,0,0,_("dselect - list of access methods"),xmax);
     wnoutrefresh(titlewin);
   }
 }
@@ -74,7 +74,7 @@ void methodlist::redrawthisstate() {
   if (!thisstate_height) return;
   mywerase(thisstatepad);
   wprintw(thisstatepad,
-          "Access method `%s'.",
+          _("Access method `%s'."),
           table[cursorline]->name);
   pnoutrefresh(thisstatepad, 0,0, thisstate_row,0,
                thisstate_row, lesserint(total_width - 1, xmax - 1));
@@ -108,8 +108,8 @@ void methodlist::redrawcolheads() {
     wattrset(colheadspad,colheads_attr);
     mywerase(colheadspad);
     mvwaddstr(colheadspad,0,0, "  ");
-    mvwaddnstr(colheadspad,0,name_column, "Abbrev.", name_width);
-    mvwaddnstr(colheadspad,0,description_column, "Description", description_width);
+    mvwaddnstr(colheadspad,0,name_column, _("Abbrev."), name_width);
+    mvwaddnstr(colheadspad,0,description_column, _("Description"), description_width);
   }
   refreshcolheads();
 }
@@ -118,7 +118,7 @@ methodlist::methodlist() : baselist(&methodlistbindings) {
   int newcursor= -1;
   
   if (debug)
-    fprintf(debug,"methodlist[%p]::methodlist()\n",this);
+    fprintf(debug,_("methodlist[%p]::methodlist()\n"),this);
 
   table= new struct option*[noptions];
 
@@ -133,11 +133,11 @@ methodlist::methodlist() : baselist(&methodlistbindings) {
   setcursor(newcursor);
 
   if (debug)
-    fprintf(debug,"methodlist[%p]::methodlist done; noptions=%d\n", this, noptions);
+    fprintf(debug,_("methodlist[%p]::methodlist done; noptions=%d\n"), this, noptions);
 }
 
 methodlist::~methodlist() {
-  if (debug) fprintf(debug,"methodlist[%p]::~methodlist()\n",this);
+  if (debug) fprintf(debug,_("methodlist[%p]::~methodlist()\n"),this);
   delete[] table;
 }
 
@@ -145,24 +145,24 @@ quitaction methodlist::display() {
   int response;
   const keybindings::interpretation *interp;
 
-  if (debug) fprintf(debug,"methodlist[%p]::display()\n",this);
+  if (debug) fprintf(debug,_("methodlist[%p]::display()\n"),this);
 
   setupsigwinch();
   startdisplay();
   
-  if (debug) fprintf(debug,"methodlist[%p]::display() entering loop\n",this);
+  if (debug) fprintf(debug,_("methodlist[%p]::display() entering loop\n"),this);
   for (;;) {
     if (whatinfo_height) wcursyncup(whatinfowin);
-    if (doupdate() == ERR) ohshite("doupdate failed");
+    if (doupdate() == ERR) ohshite(_("doupdate failed"));
     signallist= this;
-    if (sigprocmask(SIG_UNBLOCK,&sigwinchset,0)) ohshite("failed to unblock SIGWINCH");
+    if (sigprocmask(SIG_UNBLOCK,&sigwinchset,0)) ohshite(_("failed to unblock SIGWINCH"));
     response= getch();
-    if (sigprocmask(SIG_BLOCK,&sigwinchset,0)) ohshite("failed to re-block SIGWINCH");
-    if (response == ERR) ohshite("getch failed");
+    if (sigprocmask(SIG_BLOCK,&sigwinchset,0)) ohshite(_("failed to re-block SIGWINCH"));
+    if (response == ERR) ohshite(_("getch failed"));
     interp= (*bindings)(response);
     if (debug)
-      fprintf(debug,"methodlist[%p]::display() response=%d interp=%s\n",
-              this,response, interp ? interp->action : "[none]");
+      fprintf(debug,_("methodlist[%p]::display() response=%d interp=%s\n"),
+              this,response, interp ? interp->action : _("[none]"));
     if (!interp) { beep(); continue; }
     (this->*(interp->mfn))();
     if (interp->qa != qa_noquit) break;
@@ -170,13 +170,13 @@ quitaction methodlist::display() {
   pop_cleanup(ehflag_normaltidy); // unset the SIGWINCH handler
   enddisplay();
   
-  if (debug) fprintf(debug,"methodlist[%p]::display() done\n",this);
+  if (debug) fprintf(debug,_("methodlist[%p]::display() done\n"),this);
 
   return interp->qa;
 }
 
 void methodlist::itd_description() {
-  whatinfovb("explanation of ");
+  whatinfovb(_("explanation of "));
   whatinfovb(table[cursorline]->name);
 
   wattrset(infopad,info_headattr);
@@ -186,7 +186,7 @@ void methodlist::itd_description() {
   wattrset(infopad,info_attr);
 
   const char *m= table[cursorline]->description;
-  if (!m || !*m) m= "No explanation available.";
+  if (!m || !*m) m= _("No explanation available.");
   waddstr(infopad,"\n\n");
   wordwrapinfo(0,m);
 }
@@ -196,7 +196,7 @@ void methodlist::redrawinfo() {
   whatinfovb.reset();
   werase(infopad); wmove(infopad,0,0);
   
-  if (debug) fprintf(debug,"methodlist[%p]::redrawinfo()\n", this);
+  if (debug) fprintf(debug,_("methodlist[%p]::redrawinfo()\n"), this);
 
   itd_description();
 

+ 25 - 25
dselect/method.cc

@@ -59,7 +59,7 @@ static void cu_unlockmethod(int, void**) {
   assert(methodlockfile);
   assert(methlockfd);
   if (flock(methlockfd,LOCK_UN))
-    ohshite("unable to unlock access method area");
+    ohshite(_("unable to unlock access method area"));
 }
 
 static enum urqresult ensureoptions(void) {
@@ -74,8 +74,8 @@ static enum urqresult ensureoptions(void) {
       readmethods(*ccpp, &newoptions, &nread);
     if (!newoptions) {
       curseson();
-      addstr("No access methods are available.\n\n"
-             "Press RETURN to continue.");
+      addstr(_("No access methods are available.\n\n"
+             "Press RETURN to continue."));
       refresh(); getch();
       return urqr_fail;
     }
@@ -97,14 +97,14 @@ static void lockmethod(void) {
     methlockfd= open(methodlockfile, O_RDWR|O_CREAT|O_TRUNC, 0660);
     if (methlockfd == -1) {
       if (errno == EPERM)
-        ohshit("you do not have permission to change the access method");
-      ohshite("unable to open/create access method lockfile");
+        ohshit(_("you do not have permission to change the access method"));
+      ohshite(_("unable to open/create access method lockfile"));
     }
   }
   if (flock(methlockfd,LOCK_EX|LOCK_NB)) {
     if (errno == EWOULDBLOCK || errno == EAGAIN)
-      ohshit("the access method area is already locked");
-    ohshite("unable to lock access method area");
+      ohshit(_("the access method area is already locked"));
+    ohshite(_("unable to lock access method area"));
   }
   push_cleanup(cu_unlockmethod,~0, 0,0, 0);
 }
@@ -117,7 +117,7 @@ void cu_restoresignals(int, void**) {
   int i;
   for (i=0; i<NCATCHSIGNALS; i++)
     if (sigaction(catchsignals[i],&uncatchsignal[i],0))
-      fprintf(stderr,"error un-catching signal %d: %s\n",
+      fprintf(stderr,_("error un-catching signal %d: %s\n"),
               catchsignals[i],strerror(errno));
 }
 
@@ -135,20 +135,20 @@ urqresult falliblesubprocess(const char *exepath, const char *name,
   catchsig.sa_flags= 0;
   for (i=0; i<NCATCHSIGNALS; i++)
     if (sigaction(catchsignals[i],&catchsig,&uncatchsignal[i]))
-      ohshite("unable to ignore signal %d before running %.250s",
+      ohshite(_("unable to ignore signal %d before running %.250s"),
               catchsignals[i], name);
   push_cleanup(cu_restoresignals,~0, 0,0, 0);
 
   if (!(c1= m_fork())) {
     cu_restoresignals(0,0);
     execvp(exepath,(char* const*) args);
-    ohshite("unable to run %.250s process `%.250s'",name,exepath);
+    ohshite(_("unable to run %.250s process `%.250s'"),name,exepath);
   }
 
   while ((cr= waitpid(c1,&status,0)) == -1)
-    if (errno != EINTR) ohshite("unable to wait for %.250s",name);
+    if (errno != EINTR) ohshite(_("unable to wait for %.250s"),name);
   if (cr != c1)
-    ohshit("got wrong child's status - asked for %ld, got %ld",(long)c1,(long)cr);
+    ohshit(_("got wrong child's status - asked for %ld, got %ld"),(long)c1,(long)cr);
 
   pop_cleanup(ehflag_normaltidy);
 
@@ -159,25 +159,25 @@ urqresult falliblesubprocess(const char *exepath, const char *name,
   fprintf(stderr,"\n%s ",name);
   if (WIFEXITED(status)) {
     i= WEXITSTATUS(status);
-    fprintf(stderr,"returned error exit status %d.\n",i);
+    fprintf(stderr,_("returned error exit status %d.\n"),i);
   } else if (WIFSIGNALED(status)) {
     i= WTERMSIG(status);
     if (i == SIGINT) {
-      fprintf(stderr,"was interrupted.\n");
+      fprintf(stderr,_("was interrupted.\n"));
     } else {
-      fprintf(stderr,"was terminated by a signal: %s.\n",strsignal(i));
+      fprintf(stderr,_("was terminated by a signal: %s.\n"),strsignal(i));
     }
     if (WCOREDUMP(status))
-      fprintf(stderr,"(It left a coredump.)\n");
+      fprintf(stderr,_("(It left a coredump.)\n"));
   } else {
-    fprintf(stderr,"failed with an unknown wait return code %d.\n",status);
+    fprintf(stderr,_("failed with an unknown wait return code %d.\n"),status);
   }
-  fprintf(stderr,"Press RETURN to continue.\n");
+  fprintf(stderr,_("Press RETURN to continue.\n"));
   if (ferror(stderr))
-    ohshite("write error on standard error");
+    ohshite(_("write error on standard error"));
   do { c= fgetc(stdin); } while (c != EOF && c != '\n');
   if (c == EOF)
-    ohshite("error reading acknowledgement of program failure message");
+    ohshite(_("error reading acknowledgement of program failure message"));
   return urqr_fail;
 }
 
@@ -200,8 +200,8 @@ static urqresult runscript(const char *exepath, const char *name) {
     ur= falliblesubprocess(coption->meth->path,name,fallibleargs);
   } else {
     curseson();
-    addstr("No access method is selected/configured.\n\n"
-           "Press RETURN to continue.");
+    addstr(_("No access method is selected/configured.\n\n"
+           "Press RETURN to continue."));
     refresh(); getch();
     ur= urqr_fail;
   }
@@ -211,11 +211,11 @@ static urqresult runscript(const char *exepath, const char *name) {
 }
 
 urqresult urq_update(void) {
-  return runscript(METHODUPDATESCRIPT,"update available list script");
+  return runscript(METHODUPDATESCRIPT,_("update available list script"));
 }
 
 urqresult urq_install(void) {
-  return runscript(METHODINSTALLSCRIPT,"installation script");
+  return runscript(METHODINSTALLSCRIPT,_("installation script"));
 }
 
 static urqresult rundpkgauto(const char *name, const char *dpkgmode) {
@@ -261,7 +261,7 @@ urqresult urq_setup(void) {
       coption->name,
       0
     };
-    ur= falliblesubprocess(coption->meth->path,"query/setup script",fallibleargs);
+    ur= falliblesubprocess(coption->meth->path,_("query/setup script"),fallibleargs);
     if (ur == urqr_normal) writecurrentopt();
   } else {
     ur= urqr_fail;

+ 43 - 43
dselect/methparse.cc

@@ -50,12 +50,12 @@ struct method *methods=0;
 static void badmethod(const char *pathname, const char *why) NONRETURNING;
 static void badmethod(const char *pathname, const char *why)
 {
-  ohshit("syntax error in method options file `%.250s' -- %s", pathname, why);
+  ohshit(_("syntax error in method options file `%.250s' -- %s"), pathname, why);
 }
 
 static void eofmethod(const char *pathname, FILE *f, const char *why) NONRETURNING;
 static void eofmethod(const char *pathname, FILE *f, const char *why) {
-  if (ferror(f)) ohshite("error reading options file `%.250s'",pathname);
+  if (ferror(f)) ohshite(_("error reading options file `%.250s'"),pathname);
   badmethod(pathname,why);
 }
 
@@ -83,21 +83,21 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
   dir= opendir(pathbuf);
   if (!dir) {
     if (errno == ENOENT) return;
-    ohshite("unable to read `%.250s' directory for reading methods",pathbuf);
+    ohshite(_("unable to read `%.250s' directory for reading methods"),pathbuf);
   }
 
-  if (debug) fprintf(debug,"readmethods(`%s',...) directory open\n", pathbase);
+  if (debug) fprintf(debug,_("readmethods(`%s',...) directory open\n"), pathbase);
   
   while ((dent= readdir(dir)) != 0) {
     c= dent->d_name[0];
-    if (debug) fprintf(debug,"readmethods(`%s',...) considering `%s' ...\n",
+    if (debug) fprintf(debug,_("readmethods(`%s',...) considering `%s' ...\n"),
                        pathbase,dent->d_name);
     if (c != '_' && !isalpha(c)) continue;
     for (p= dent->d_name+1; (c= *p) != 0 && isalnum(c) && c != '_'; p++);
     if (c) continue;
     methodlen= strlen(dent->d_name);
     if (methodlen > IMETHODMAXLEN)
-      ohshit("method `%.250s' has name that is too long (%d > %d characters)",
+      ohshit(_("method `%.250s' has name that is too long (%d > %d characters)"),
              dent->d_name, methodlen, IMETHODMAXLEN);
     /* Check if there is a localized version of this method */
     
@@ -108,13 +108,13 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
     for (ccpp= methodprograms; *ccpp; ccpp++) {
       strcpy(pathinmeth,*ccpp);
       if (access(pathbuf,R_OK|X_OK))
-        ohshite("unable to access method script `%.250s'",pathbuf);
+        ohshite(_("unable to access method script `%.250s'"),pathbuf);
     }
-    if (debug) fprintf(debug," readmethods(`%s',...) scripts ok\n", pathbase);
+    if (debug) fprintf(debug,_(" readmethods(`%s',...) scripts ok\n"), pathbase);
 
     strcpy(pathinmeth,METHODOPTIONSFILE);
     names= fopen(pathbuf,"r");
-    if (!names) ohshite("unable to read method options file `%.250s'",pathbuf);
+    if (!names) ohshite(_("unable to read method options file `%.250s'"),pathbuf);
 
     meth= new method;
     meth->name= new char[strlen(dent->d_name)+1];
@@ -127,8 +127,8 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
     meth->back= 0;
     if (methods) methods->back= meth;
     methods= meth;
-    if (debug) fprintf(debug," readmethods(`%s',...) new method"
-                       " name=`%s' path=`%s' pathinmeth=`%s'\n",
+    if (debug) fprintf(debug,_(" readmethods(`%s',...) new method"
+                       " name=`%s' path=`%s' pathinmeth=`%s'\n"),
                        pathbase, meth->name, meth->path, meth->pathinmeth);
     
     while ((c= fgetc(names)) != EOF) {
@@ -137,40 +137,40 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
       opt->meth= meth;
       vb.reset();
       do {
-        if (!isdigit(c)) badmethod(pathbuf,"non-digit where digit wanted");
+        if (!isdigit(c)) badmethod(pathbuf,_("non-digit where digit wanted"));
         vb(c);
         c= fgetc(names);
-        if (c == EOF) eofmethod(pathbuf,names,"EOF in index string");
+        if (c == EOF) eofmethod(pathbuf,names,_("EOF in index string"));
       } while (!isspace(c));
       if (strlen(vb.string()) > OPTIONINDEXMAXLEN)
-        badmethod(pathbuf,"index string too long");
+        badmethod(pathbuf,_("index string too long"));
       strcpy(opt->index,vb.string());
       do {
-        if (c == '\n') badmethod(pathbuf,"newline before option name start");
+        if (c == '\n') badmethod(pathbuf,_("newline before option name start"));
         c= fgetc(names);
-        if (c == EOF) eofmethod(pathbuf,names,"EOF before option name start");
+        if (c == EOF) eofmethod(pathbuf,names,_("EOF before option name start"));
       } while (isspace(c));
       vb.reset();
       if (!isalpha(c) && c != '_')
-        badmethod(pathbuf,"nonalpha where option name start wanted");
+        badmethod(pathbuf,_("nonalpha where option name start wanted"));
       do {
-        if (!isalnum(c) && c != '_') badmethod(pathbuf,"non-alphanum in option name");
+        if (!isalnum(c) && c != '_') badmethod(pathbuf,_("non-alphanum in option name"));
         vb(c);
         c= fgetc(names);
-        if (c == EOF) eofmethod(pathbuf,names,"EOF in option name");
+        if (c == EOF) eofmethod(pathbuf,names,_("EOF in option name"));
       } while (!isspace(c));
       opt->name= new char[strlen(vb.string())+1];
       strcpy(opt->name,vb.string());
       do {
-        if (c == '\n') badmethod(pathbuf,"newline before summary");
+        if (c == '\n') badmethod(pathbuf,_("newline before summary"));
         c= fgetc(names);
-        if (c == EOF) eofmethod(pathbuf,names,"EOF before summary");
+        if (c == EOF) eofmethod(pathbuf,names,_("EOF before summary"));
       } while (isspace(c));
       vb.reset();
       do {
         vb(c);
         c= fgetc(names);
-        if (c == EOF) eofmethod(pathbuf,names,"EOF in summary - missing newline");
+        if (c == EOF) eofmethod(pathbuf,names,_("EOF in summary - missing newline"));
       } while (c != '\n');
       opt->summary= new char[strlen(vb.string())+1];
       strcpy(opt->summary,vb.string());
@@ -180,26 +180,26 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
       descfile= fopen(pathbuf,"r");
       if (!descfile) {
         if (errno != ENOENT)
-          ohshite("unable to open option description file `%.250s'",pathbuf);
+          ohshite(_("unable to open option description file `%.250s'"),pathbuf);
         opt->description= 0;
       } else { /* descfile != 0 */
         if (fstat(fileno(descfile),&stab))
-          ohshite("unable to stat option description file `%.250s'",pathbuf);
+          ohshite(_("unable to stat option description file `%.250s'"),pathbuf);
         opt->description= new char[stab.st_size+1];  errno=0;
         unsigned long filelen= stab.st_size;
         if (fread(opt->description,1,stab.st_size+1,descfile) != filelen)
-          ohshite("failed to read option description file `%.250s'",pathbuf);
+          ohshite(_("failed to read option description file `%.250s'"),pathbuf);
         opt->description[stab.st_size]= 0;
         if (ferror(descfile))
-          ohshite("error during read of option description file `%.250s'",pathbuf);
+          ohshite(_("error during read of option description file `%.250s'"),pathbuf);
         fclose(descfile);
       }
       strcpy(pathinmeth,METHODOPTIONSFILE);
       
-      if (debug) fprintf(debug," readmethods(`%s',...) new option"
+      if (debug) fprintf(debug,_(" readmethods(`%s',...) new option"
                          " index=`%s' name=`%s' summary=`%.20s'"
                          " strlen(description=%s)=%ld"
-                         " method name=`%s' path=`%s' pathinmeth=`%s'\n",
+                         " method name=`%s' path=`%s' pathinmeth=`%s'\n"),
                          pathbase,
                          opt->index, opt->name, opt->summary,
                          opt->description ? "`...'" : "null",
@@ -213,11 +213,11 @@ void readmethods(const char *pathbase, option **optionspp, int *nread) {
       (*nread)++;
     }
     if (ferror(names))
-      ohshite("error during read of method options file `%.250s'",pathbuf);
+      ohshite(_("error during read of method options file `%.250s'"),pathbuf);
     fclose(names);
   }
   closedir(dir);
-  if (debug) fprintf(debug,"readmethods(`%s',...) done\n", pathbase);
+  if (debug) fprintf(debug,_("readmethods(`%s',...) done\n"), pathbase);
   delete[] pathbuf;
 }
 
@@ -243,28 +243,28 @@ void getcurrentopt() {
   cmo= fopen(methoptfile,"r");
   if (!cmo) {
     if (errno == ENOENT) return;
-    ohshite("unable to open current option file `%.250s'",methoptfile);
+    ohshite(_("unable to open current option file `%.250s'"),methoptfile);
   }
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt open\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt open\n"));
   if (!fgets(methoptbuf,sizeof(methoptbuf),cmo)) { fclose(cmo); return; }
   if (fgetc(cmo) != EOF) { fclose(cmo); return; }
   if (!feof(cmo)) { fclose(cmo); return; }
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt eof\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt eof\n"));
   fclose(cmo);
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt read\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt read\n"));
   l= strlen(methoptbuf);  if (!l || methoptbuf[l-1] != '\n') return;
   methoptbuf[--l]= 0;
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt len and newline\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt len and newline\n"));
   p= strchr(methoptbuf,' ');  if (!p) return;
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt space\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt space\n"));
   *p++= 0;
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt meth name `%s'\n", methoptbuf);
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt meth name `%s'\n"), methoptbuf);
   for (meth= methods; meth && strcmp(methoptbuf,meth->name); meth= meth->next);
   if (!meth) return;
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt meth found; opt `%s'\n",p);
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt meth found; opt `%s'\n"),p);
   for (opt= options; opt && (opt->meth != meth || strcmp(p,opt->name)); opt= opt->next);
   if (!opt) return;
-  if (debug) fprintf(debug,"getcurrentopt() cmethopt opt found\n");
+  if (debug) fprintf(debug,_("getcurrentopt() cmethopt opt found\n"));
   coption= opt;
 }
 
@@ -281,13 +281,13 @@ void writecurrentopt() {
     strcpy(newfile+l, NEWDBEXT);
   }
   cmo= fopen(newfile,"w");
-  if (!cmo) ohshite("unable to open new option file `%.250s'",newfile);
+  if (!cmo) ohshite(_("unable to open new option file `%.250s'"),newfile);
   if (fprintf(cmo,"%s %s\n",coption->meth->name,coption->name) == EOF) {
     fclose(cmo);
-    ohshite("unable to write new option to `%.250s'",newfile);
+    ohshite(_("unable to write new option to `%.250s'"),newfile);
   }
   if (fclose(cmo))
-    ohshite("unable to close new option file `%.250s'",newfile);
+    ohshite(_("unable to close new option file `%.250s'"),newfile);
   if (rename(newfile,methoptfile))
-    ohshite("unable to install new option as `%.250s'",methoptfile);
+    ohshite(_("unable to install new option as `%.250s'"),methoptfile);
 }

+ 5 - 5
dselect/pkgcmds.cc

@@ -44,7 +44,7 @@ int packagelist::affectedmatches(struct pkginfo *pkg, struct pkginfo *comparewit
   case sso_unsorted:
     break;
   default:
-    internerr("unknown statsortorder in affectedmatches");
+    internerr(_("unknown statsortorder in affectedmatches"));
   }
   if (comparewith->priority != pkginfo::pri_unset &&
       (comparewith->priority != pkg->priority ||
@@ -136,7 +136,7 @@ void packagelist::kd_purge()    { setwant(pkginfo::want_purge);     }
 
 int would_like_to_install(pkginfo::pkgwant wantvalue, pkginfo *pkg) {
   /* Returns: 1 for yes, 0 for no, -1 for if they want to preserve an error condition. */
-  if (debug) fprintf(debug,"would_like_to_install(%d, %s) status %d\n",
+  if (debug) fprintf(debug,_("would_like_to_install(%d, %s) status %d\n"),
                      wantvalue,pkg->name,pkg->status);
   
   if (wantvalue == pkginfo::want_install) return 1;
@@ -157,7 +157,7 @@ void packagelist::kd_swapstatorder() {
   case sso_avail:     statsortorder= sso_state;     break;
   case sso_state:     statsortorder= sso_unsorted;  break;
   case sso_unsorted:  statsortorder= sso_avail;     break;
-  default: internerr("unknown statsort in kd_swapstatorder");
+  default: internerr(_("unknown statsort in kd_swapstatorder"));
   }
   resortredisplay();
 }
@@ -168,7 +168,7 @@ void packagelist::kd_swaporder() {
   case so_section:   sortorder= so_alpha;     break;
   case so_alpha:     sortorder= so_priority;  break;
   case so_unsorted:                           return;
-  default: internerr("unknown sort in kd_swaporder");
+  default: internerr(_("unknown sort in kd_swaporder"));
   }
   resortredisplay();
 }
@@ -204,7 +204,7 @@ void packagelist::kd_versiondisplay() {
   case vdo_both:       versiondisplayopt= vdo_none;       break;
   case vdo_none:       versiondisplayopt= vdo_available;  break;
   case vdo_available:  versiondisplayopt= vdo_both;       break;
-  default: internerr("unknown versiondisplayopt in kd_versiondisplay");
+  default: internerr(_("unknown versiondisplayopt in kd_versiondisplay"));
   }
   setwidths();
   leftofscreen= 0;

+ 26 - 26
dselect/pkgdepcon.cc

@@ -49,7 +49,7 @@ pkginfoperfile *packagelist::findinfo(pkginfo *pkg) {
   pkginfoperfile *r;
   r= useavailable(pkg) ? &pkg->available : &pkg->installed;
   if (debug)
-    fprintf(debug,"packagelist[%p]::findinfo(%s) useavailable=%d\n",this,pkg->name,useavailable(pkg));
+    fprintf(debug,_("packagelist[%p]::findinfo(%s) useavailable=%d\n"),this,pkg->name,useavailable(pkg));
   if (!r->valid) blankpackageperfile(r);
   return r;
 }
@@ -78,7 +78,7 @@ int packagelist::resolvesuggest() {
   // Return 2 if we made a change due to a Recommended, Depends or Conficts,
   // or 1 if we offered or made a change because of an Optional line.
   if (debug)
-    fprintf(debug,"packagelist[%p]::resolvesuggest()\n",this);
+    fprintf(debug,_("packagelist[%p]::resolvesuggest()\n"),this);
   int changemade, maxchangemade;
   maxchangemade= 0;
   for (;;) {
@@ -87,7 +87,7 @@ int packagelist::resolvesuggest() {
     for (index=0; index<nitems; index++) {
       if (!table[index]->pkg->name) continue;
       if (depdebug && debug)
-        fprintf(debug,"packagelist[%p]::resolvesuggest() loop[%i] %s / %d\n",
+        fprintf(debug,_("packagelist[%p]::resolvesuggest() loop[%i] %s / %d\n"),
                 this, index, table[index]->pkg->name, changemade);
       dependency *depends;
       for (depends= findinfo(table[index]->pkg)->depends;
@@ -103,14 +103,14 @@ int packagelist::resolvesuggest() {
         changemade= checkdependers(depends->list->ed,changemade);
       }
       if (depdebug && debug)
-        fprintf(debug,"packagelist[%p]::resolvesuggest() loop[%i] %s / -> %d\n",
+        fprintf(debug,_("packagelist[%p]::resolvesuggest() loop[%i] %s / -> %d\n"),
                 this, index, table[index]->pkg->name, changemade);
     }
     if (!changemade) break;
     maxchangemade= greaterint(maxchangemade, changemade);
   }
   if (debug)
-    fprintf(debug,"packagelist[%p]::resolvesuggest() done; maxchangemade=%d\n",
+    fprintf(debug,_("packagelist[%p]::resolvesuggest() done; maxchangemade=%d\n"),
             this,maxchangemade);
   return maxchangemade;
 }
@@ -120,7 +120,7 @@ static int dep_update_best_to_change_stop(perpackagestate *& best, pkginfo *tryt
   if (!trythis->clientdata) return 0;
   
   if (depdebug && debug)
-    fprintf(debug,"update_best_to_change(best=%s{%d}, test=%s{%d});\n",
+    fprintf(debug,_("update_best_to_change(best=%s{%d}, test=%s{%d});\n"),
             best ? best->pkg->name : "", best ? (int)best->spriority : -1,
             trythis->name, trythis->clientdata->spriority);
 
@@ -150,7 +150,7 @@ static int dep_update_best_to_change_stop(perpackagestate *& best, pkginfo *tryt
   return 0;
   
  yes:
-  if (depdebug && debug) fprintf(debug,"update_best_to_change(); yes\n");
+  if (depdebug && debug) fprintf(debug,_("update_best_to_change(); yes\n"));
 
   best=trythis->clientdata; return 0;
 }
@@ -168,7 +168,7 @@ int packagelist::deselect_one_of(pkginfo *per, pkginfo *ped, dependency *display
   ed= ped->clientdata;
   
   if (depdebug && debug)
-    fprintf(debug,"packagelist[%p]::deselect_one_of(): er %s{%d} ed %s{%d} [%p]\n",
+    fprintf(debug,_("packagelist[%p]::deselect_one_of(): er %s{%d} ed %s{%d} [%p]\n"),
             this, er->pkg->name, er->spriority, ed->pkg->name, ed->spriority, display);
   
   perpackagestate *best;
@@ -185,7 +185,7 @@ int packagelist::deselect_one_of(pkginfo *per, pkginfo *ped, dependency *display
   else best= ed;                                      // ... failing that, the second
 
   if (depdebug && debug)
-    fprintf(debug,"packagelist[%p]::deselect_one_of(): best %s{%d}\n",
+    fprintf(debug,_("packagelist[%p]::deselect_one_of(): best %s{%d}\n"),
             this, best->pkg->name, best->spriority);
 
   if (best->spriority >= sp_deselecting) return 0;
@@ -204,14 +204,14 @@ int packagelist::resolvedepcon(dependency *depends) {
   int r, foundany;
 
   if (depdebug && debug) {
-    fprintf(debug,"packagelist[%p]::resolvedepcon([%p] %s --%s-->",
-            this,depends,depends->up->name,relatestrings[depends->type]);
+    fprintf(debug,_("packagelist[%p]::resolvedepcon([%p] %s --%s-->"),
+          this,depends,depends->up->name,gettext(relatestrings[depends->type]));
     for (possi=depends->list; possi; possi=possi->next)
       fprintf(debug," %s",possi->ed->name);
     fprintf(debug,"); (ing)->want=%s\n",
             depends->up->clientdata
-            ? wantstrings[depends->up->clientdata->suggested]
-            : "(no clientdata)");
+            ? gettext(wantstrings[depends->up->clientdata->suggested])
+            : _("(no clientdata)"));
   }
   
   if (!depends->up->clientdata) return 0;
@@ -238,9 +238,9 @@ int packagelist::resolvedepcon(dependency *depends) {
          possi && !deppossatisfied(possi,&fixbyupgrade);
          possi= possi->next);
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): depends found %s\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): depends found %s\n"),
               this,depends,
-              possi ? possi->ed->name : "[none]");
+              possi ? possi->ed->name : _("[none]"));
     if (possi) return 0;
 
     // Ensures all in the recursive list; adds info strings; ups priorities
@@ -249,8 +249,8 @@ int packagelist::resolvedepcon(dependency *depends) {
     if (depends->type == dep_suggests) return r;
 
     if (fixbyupgrade) {
-      if (depdebug && debug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
-                            "fixbyupgrade %s\n", this,depends,fixbyupgrade->pkg->name);
+      if (depdebug && debug) fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): "
+                            "fixbyupgrade %s\n"), this,depends,fixbyupgrade->pkg->name);
       best= fixbyupgrade;
     } else {
       best= 0;
@@ -270,13 +270,13 @@ int packagelist::resolvedepcon(dependency *depends) {
         if (!foundany) addunavailable(possi);
       }
       if (!best) {
-        if (depdebug && debug) fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): "
-                              "mustdeselect nobest\n", this,depends);
+        if (depdebug && debug) fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): "
+                              "mustdeselect nobest\n"), this,depends);
         return r;
       }
     }
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): select best=%s{%d}\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): select best=%s{%d}\n"),
               this,depends, best->pkg->name, best->spriority);
     if (best->spriority >= sp_selecting) return r;
     best->selected= best->suggested= pkginfo::want_install;
@@ -286,7 +286,7 @@ int packagelist::resolvedepcon(dependency *depends) {
   mustdeselect:
     best= depends->up->clientdata;
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): mustdeselect best=%s{%d}\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): mustdeselect best=%s{%d}\n"),
               this,depends, best->pkg->name, best->spriority);
 
     if (best->spriority >= sp_deselecting) return r;
@@ -299,20 +299,20 @@ int packagelist::resolvedepcon(dependency *depends) {
   case dep_conflicts:
 
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): conflict\n"),
               this,depends);
     
     if (would_like_to_install(depends->up->clientdata->selected,depends->up) == 0)
       return 0;
 
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict installing 1\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): conflict installing 1\n"),
               this,depends);
 
     if (!deppossatisfied(depends->list,0)) return 0;
 
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): conflict satisfied - ouch\n",
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): conflict satisfied - ouch\n"),
               this,depends);
 
     if (depends->up != depends->list->ed) {
@@ -327,11 +327,11 @@ int packagelist::resolvedepcon(dependency *depends) {
       r= deselect_one_of(depends->up, provider->up->up, depends);  if (r) return r;
     }
     if (depdebug && debug)
-      fprintf(debug,"packagelist[%p]::resolvedepcon([%p]): no desel\n", this,depends);
+      fprintf(debug,_("packagelist[%p]::resolvedepcon([%p]): no desel\n"), this,depends);
     return 0;
     
   default:
-    internerr("unknown deptype");
+    internerr(_("unknown deptype"));
   }
   /* never reached, make gcc happy */
   return 1;

+ 95 - 59
dselect/pkgdisplay.cc

@@ -35,54 +35,90 @@ extern "C" {
 
 /* These MUST be in the same order as the corresponding enums in dpkg-db.h */
 const char
-  *const wantstrings[]=   { "new package", "install", "hold", "remove", "purge", 0 },
-  *const eflagstrings[]=   { "", "REINSTALL", 0 },
-  *const statusstrings[]= { "not installed", "unpacked (not set up)",
-                            "failed config", "installed", "half installed",
-                            "removed (configs remain)", 0                             },
-  *const prioritystrings[]=  { "Required", "Important", "Standard", "Recommended",
-                               "Optional", "Extra", "Contrib",
-                               "!Bug!", "Unclassified", 0                             },
-  *const relatestrings[]= { "suggests", "recommends", "depends on", "pre-depends on",
-                            "conflicts with", "provides", "replaces", 0               },
-  *const priorityabbrevs[]=  { "Req", "Imp", "Std", "Rec",
-                               "Opt", "Xtr", "Ctb",
-                               "bUG", "?"                  };
+  *const wantstrings[]=   { N_("new package"), 
+			    N_("install"),
+			    N_("hold"),
+			    N_("remove"), 
+			    N_("purge"),
+			    0 },
+
+  *const eflagstrings[]=   { N_(""), 
+			     N_("REINSTALL"), 
+			     0 },
+
+  *const statusstrings[]= { N_("not installed"),
+			    N_("unpacked (not set up)"),
+			    N_("failed config"),
+			    N_("installed"),
+			    N_("half installed"),
+			    N_("removed (configs remain)"),
+			    0 },
+
+  *const prioritystrings[]=  { N_("Required"),
+			       N_("Important"),
+			       N_("Standard"),
+			       N_("Recommended"),
+			       N_("Optional"),
+			       N_("Extra"),
+			       N_("Contrib"),
+			       N_("!Bug!"),
+			       N_("Unclassified"),
+			       0 },
+
+  *const relatestrings[]= { N_("suggests"),
+			    N_("recommends"),
+			    N_("depends on"),
+			    N_("pre-depends on"),
+			    N_("conflicts with"),
+			    N_("provides"),
+			    N_("replaces"),
+			    0 },
+
+  *const priorityabbrevs[]=  { N_("Req"),
+			       N_("Imp"),
+			       N_("Std"),
+			       N_("Rec"),
+			       N_("Opt"),
+			       N_("Xtr"),
+			       N_("Ctb"),
+			       N_("bUG"),
+			       N_("?") };
+
 const char statuschars[]=   " UC*I-";
 const char eflagchars[]=     " R?#";
 const char wantchars[]=     "n*=-_";
 
 /* These MUST be in the same order as the corresponding enums in pkglist.h */
 const char
-  *const ssaabbrevs[]= { "Broken",
-                         "New",
-                         "Updated",
-                         "Obsolete/local",
-                         "Up-to-date",
-                         "Available",
-                         "Removed" },
-  *const ssastrings[]= { "Brokenly installed packages",
-                         "Newly available packages",
-                         "Updated packages (newer version is available)",
-                         "Obsolete and local packages present on system",
-                         "Up to date installed packages",
-                         "Available packages (not currently installed)",
-                         "Removed and no longer available packages" };
+  *const ssaabbrevs[]= { N_("Broken"),
+                         N_("New"),
+                         N_("Updated"),
+                         N_("Obsolete/local"),
+                         N_("Up-to-date"),
+                         N_("Available"),
+                         N_("Removed") },
+  *const ssastrings[]= { N_("Brokenly installed packages"),
+                         N_("Newly available packages"),
+                         N_("Updated packages (newer version is available)"),
+                         N_("Obsolete and local packages present on system"),
+                         N_("Up to date installed packages"),
+                         N_("Available packages (not currently installed)"),
+                         N_("Removed and no longer available packages") };
 
 const char
-  *const sssstrings[]= { "Brokenly installed packages",
-                         "Installed packages",
-                         "Removed packages (configuration still present)",
-                         "Purged packages and those never installed" },
-  *const sssabbrevs[]= { "Broken",
-                         "Installed",
-                         "Removed",
-                         "Purged" };
+  *const sssstrings[]= { N_("Brokenly installed packages"),
+                         N_("Installed packages"),
+                         N_("Removed packages (configuration still present)"),
+                         N_("Purged packages and those never installed") },
+  *const sssabbrevs[]= { N_("Broken"),
+                         N_("Installed"),
+                         N_("Removed"),
+                         N_("Purged") };
 
 static int maximumstring(const char *const *array) {
   int maxlen= 0;
   while (*array) {
-    int l= strlen(*array);
+    int l= strlen(gettext(*array));
     const char *p= strchr(*array, '(');
     if (p && p > *array && *--p == ' ') l= p - *array;
     if (l > maxlen) maxlen= l;
@@ -92,7 +128,7 @@ static int maximumstring(const char *const *array) {
 }
 
 void packagelist::setwidths() {
-  if (debug) fprintf(debug,"packagelist[%p]::setwidths()\n",this);
+  if (debug) fprintf(debug,_("packagelist[%p]::setwidths()\n"),this);
 
   if (verbose) {
     status_hold_width= 9;
@@ -142,7 +178,7 @@ void packagelist::setwidths() {
     description_column= versionavailable_column + versionavailable_width + gap_width;
     break;
   default:
-    internerr("unknown versiondisplayopt in setwidths");
+    internerr(_("unknown versiondisplayopt in setwidths"));
   }
     
   total_width= TOTAL_LIST_WIDTH;
@@ -155,9 +191,9 @@ void packagelist::redrawtitle() {
   if (title_height) {
     mywerase(titlewin);
     mvwaddnstr(titlewin,0,0,
-               recursive ?  "dselect - recursive package listing" :
-               !readwrite ? "dselect - inspection of package states" :
-                            "dselect - main package listing",
+               recursive ?  _("dselect - recursive package listing") :
+               !readwrite ? _("dselect - inspection of package states") :
+                            _("dselect - main package listing"),
                xmax);
     getyx(titlewin,y,x);
     if (x < xmax) {
@@ -165,60 +201,60 @@ void packagelist::redrawtitle() {
       case so_section:
         switch (statsortorder) {
         case sso_unsorted:
-          waddnstr(titlewin, " (by section)", xmax-x);
+          waddnstr(titlewin, _(" (by section)"), xmax-x);
           break;
         case sso_avail:
-          waddnstr(titlewin, " (avail., section)", xmax-x);
+          waddnstr(titlewin, _(" (avail., section)"), xmax-x);
           break;
         case sso_state:
-          waddnstr(titlewin, " (status, section)", xmax-x);
+          waddnstr(titlewin, _(" (status, section)"), xmax-x);
           break;
         default:
-          internerr("bad statsort in redrawtitle/so_section");
+          internerr(_("bad statsort in redrawtitle/so_section"));
         }
         break;
       case so_priority:
         switch (statsortorder) {
         case sso_unsorted:
-          waddnstr(titlewin, " (by priority)", xmax-x);
+          waddnstr(titlewin, _(" (by priority)"), xmax-x);
           break;
         case sso_avail:
-          waddnstr(titlewin, " (avail., priority)", xmax-x);
+          waddnstr(titlewin, _(" (avail., priority)"), xmax-x);
           break;
         case sso_state:
-          waddnstr(titlewin, " (status, priority)", xmax-x);
+          waddnstr(titlewin, _(" (status, priority)"), xmax-x);
           break;
         default:
-          internerr("bad statsort in redrawtitle/so_priority");
+          internerr(_("bad statsort in redrawtitle/so_priority"));
         }
         break;
       case so_alpha:
         switch (statsortorder) {
         case sso_unsorted:
-          waddnstr(titlewin, " (alphabetically)", xmax-x);
+          waddnstr(titlewin, _(" (alphabetically)"), xmax-x);
           break;
         case sso_avail:
-          waddnstr(titlewin, " (by availability)", xmax-x);
+          waddnstr(titlewin, _(" (by availability)"), xmax-x);
           break;
         case sso_state:
-          waddnstr(titlewin, " (by status)", xmax-x);
+          waddnstr(titlewin, _(" (by status)"), xmax-x);
           break;
         default:
-          internerr("bad statsort in redrawtitle/so_priority");
+          internerr(_("bad statsort in redrawtitle/so_priority"));
         }
         break;
-        waddnstr(titlewin, " (alphabetically)", xmax-x);
+        waddnstr(titlewin, _(" (alphabetically)"), xmax-x);
         break;
       case so_unsorted:
         break;
       default:
-        internerr("bad sort in redrawtitle");
+        internerr(_("bad sort in redrawtitle"));
       }
     }
-    const char *helpstring= readwrite ? (verbose ? " mark:+/=/- terse:v help:?"
-                                                 : " mark:+/=/- verbose:v help:?")
-                                      : (verbose ? " terse:v help:?"
-                                                 : " verbose:v help:?");
+    const char *helpstring= readwrite ? (verbose ? _(" mark:+/=/- terse:v help:?")
+                                                 : _(" mark:+/=/- verbose:v help:?"))
+                                      : (verbose ? _(" terse:v help:?")
+                                                 : _(" verbose:v help:?"));
     int l= strlen(helpstring);
     getyx(titlewin,y,x);
     if (xmax-l > 0) {

+ 15 - 15
dselect/pkginfo.cc

@@ -78,7 +78,7 @@ const packagelist::infotype *const packagelist::baseinfo= infoinfos;
 void packagelist::severalinfoblurb(const char *whatinfoline) {
   whatinfovb(whatinfoline);
   varbuf vb;
-  vb("The line you have highlighted represents many packages; "
+  vb(_("The line you have highlighted represents many packages; "
      "if you ask to install, remove, hold, &c it you will affect all "
      "the packages which match the criterion shown.\n"
      "\n"
@@ -86,29 +86,29 @@ void packagelist::severalinfoblurb(const char *whatinfoline) {
      "you will see information about that package displayed here."
      "\n"
      "You can use `o' and `O' to change the sort order and give yourself "
-     "the opportunity to mark packages in different kinds of groups.");
+     "the opportunity to mark packages in different kinds of groups."));
   wordwrapinfo(0,vb.string());
 }
 
 void packagelist::itd_relations() {
   if (table[cursorline]->pkg->name) {
-    whatinfovb("interrelationships affecting ");
+    whatinfovb(_("interrelationships affecting "));
     whatinfovb(table[cursorline]->pkg->name);
-    if (debug) fprintf(debug,"packagelist[%p]::idt_relations(); `%s'\n",
+    if (debug) fprintf(debug,_("packagelist[%p]::idt_relations(); `%s'\n"),
                        this,table[cursorline]->relations.string());
     waddstr(infopad,table[cursorline]->relations.string());
   } else {
-    severalinfoblurb("interrelationships");
+    severalinfoblurb(_("interrelationships"));
   }
 }
 
 void packagelist::itd_description() {
   if (table[cursorline]->pkg->name) {
-    whatinfovb("description of ");
+    whatinfovb(_("description of "));
     whatinfovb(table[cursorline]->pkg->name);
 
     const char *m= table[cursorline]->pkg->available.description;
-    if (!m || !*m) m= "no description available.";
+    if (!m || !*m) m= _("no description available.");
     const char *p= strchr(m,'\n');
     int l= p ? (int)(p-m) : strlen(m);
     wattrset(infopad,info_headattr);
@@ -121,22 +121,22 @@ void packagelist::itd_description() {
       wordwrapinfo(1,++p);
     }
   } else {
-    severalinfoblurb("description");
+    severalinfoblurb(_("description"));
   }
 }
 
 void packagelist::itd_statuscontrol() {
   werase(infopad);
   if (!table[cursorline]->pkg->name) {
-    severalinfoblurb("currently installed control info");
+    severalinfoblurb(_("currently installed control info"));
   } else {
-    whatinfovb("installed control info for ");
+    whatinfovb(_("installed control info for "));
     whatinfovb(table[cursorline]->pkg->name);
     varbuf vb;
     varbufrecord(&vb,table[cursorline]->pkg,&table[cursorline]->pkg->installed);
     vb.terminate();
     if (debug)
-      fprintf(debug,"packagelist[%p]::idt_statuscontrol(); `%s'\n",this,vb.string());
+      fprintf(debug,_("packagelist[%p]::idt_statuscontrol(); `%s'\n"),this,vb.string());
     waddstr(infopad,vb.string());
   }
 }
@@ -144,15 +144,15 @@ void packagelist::itd_statuscontrol() {
 void packagelist::itd_availablecontrol() {
   werase(infopad);
   if (!table[cursorline]->pkg->name) {
-    severalinfoblurb("available version of control file info");
+    severalinfoblurb(_("available version of control file info"));
   } else {
-    whatinfovb("available version of control info for ");
+    whatinfovb(_("available version of control info for "));
     whatinfovb(table[cursorline]->pkg->name);
     varbuf vb;
     varbufrecord(&vb,table[cursorline]->pkg,&table[cursorline]->pkg->available);
     vb.terminate();
     if (debug)
-      fprintf(debug,"packagelist[%p]::idt_availablecontrol(); `%s'\n",this,vb.string());
+      fprintf(debug,_("packagelist[%p]::idt_availablecontrol(); `%s'\n"),this,vb.string());
     waddstr(infopad,vb.string());
   }
 }
@@ -169,7 +169,7 @@ void packagelist::redrawinfo() {
   werase(infopad); wmove(infopad,0,0);
   
   if (debug)
-    fprintf(debug,"packagelist[%p]::redrawinfo(); #=%d\n", this,
+    fprintf(debug,_("packagelist[%p]::redrawinfo(); #=%d\n"), this,
             (int)(currentinfo - baseinfo));
   
   (this->*currentinfo->display)();

+ 18 - 18
dselect/pkglist.cc

@@ -45,7 +45,7 @@ int packagelist::compareentries(struct perpackagestate *a,
   case sso_unsorted:
     break;
   default:
-    internerr("unknown statsortorder in compareentries");
+    internerr(_("unknown statsortorder in compareentries"));
   }
 
   const char *asection= a->pkg->section;
@@ -76,7 +76,7 @@ int packagelist::compareentries(struct perpackagestate *a,
     return c_name;
   case so_unsorted:
   default:
-    internerr("unsorted or unknown in compareentries");
+    internerr(_("unsorted or unknown in compareentries"));
   }
   /* never reached, make gcc happy */
   return 1;
@@ -116,10 +116,10 @@ void packagelist::addheading(enum ssavailval ssavail,
     table= newtable;
   }
   
-  if (debug) fprintf(debug,"packagelist[%p]::addheading(%d,%d,%d,%s,%s)\n",
+  if (debug) fprintf(debug,_("packagelist[%p]::addheading(%d,%d,%d,%s,%s)\n"),
                      this,ssavail,ssstate,priority,
-                     otherpriority ? otherpriority : "<null>",
-                     section ? section : "<null>");
+                     otherpriority ? otherpriority : _("<null>"),
+                     section ? section : _("<null>"));
 
   struct pkginfo *newhead= new pkginfo;
   newhead->name= 0;
@@ -148,7 +148,7 @@ int qsort_compareentries(const void *a, const void *b) {
 void packagelist::sortinplace() {
   sortpackagelist= this;
 
-  if (debug) fprintf(debug,"packagelist[%p]::sortinplace()\n",this);
+  if (debug) fprintf(debug,_("packagelist[%p]::sortinplace()\n"),this);
   qsort(table,nitems,sizeof(struct pkginfoperfile*),qsort_compareentries);
 }
 
@@ -158,20 +158,20 @@ void packagelist::ensurestatsortinfo() {
   struct pkginfo *pkg;
   int index;
   
-  if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() "
-                     "sortorder=%d nitems=%d\n",this,statsortorder,nitems);
+  if (debug) fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() "
+                     "sortorder=%d nitems=%d\n"),this,statsortorder,nitems);
   
   switch (statsortorder) {
   case sso_unsorted:
-    if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() unsorted\n",this);
+    if (debug) fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() unsorted\n"),this);
     return;
   case sso_avail:
-    if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() calcssadone=%d\n",
+    if (debug) fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() calcssadone=%d\n"),
                        this,calcssadone);
     if (calcssadone) return;
     for (index=0; index < nitems; index++) {
       if (debug)
-        fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n",
+        fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n"),
                 this,index,table[index]->pkg->name);
       pkg= table[index]->pkg;
       if (!pkg->installed.valid) blankpackageperfile(&pkg->installed);
@@ -204,22 +204,22 @@ void packagelist::ensurestatsortinfo() {
         }
         break;
       default:
-        internerr("unknown stat in ensurestatsortinfo sso_avail");
+        internerr(_("unknown stat in ensurestatsortinfo sso_avail"));
       }
       if (debug)
-        fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d ssavail=%d\n",
+        fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() i=%d ssavail=%d\n"),
                 this,index,table[index]->ssavail);
   
     }
     calcssadone= 1;
     break;
   case sso_state:
-    if (debug) fprintf(debug,"packagelist[%p]::ensurestatsortinfos() calcsssdone=%d\n",
+    if (debug) fprintf(debug,_(_("packagelist[%p]::ensurestatsortinfos() calcsssdone=%d\n")),
                        this,calcsssdone);
     if (calcsssdone) return;
     for (index=0; index < nitems; index++) {
       if (debug)
-        fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n",
+        fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() i=%d pkg=%s\n"),
                 this,index,table[index]->pkg->name);
       switch (table[index]->pkg->status) {
       case pkginfo::stat_unpacked:
@@ -237,17 +237,17 @@ void packagelist::ensurestatsortinfo() {
         table[index]->ssstate= sss_installed;
         break;
       default:
-        internerr("unknown stat in ensurestatsortinfo sso_state");
+        internerr(_("unknown stat in ensurestatsortinfo sso_state"));
       }
       if (debug)
-        fprintf(debug,"packagelist[%p]::ensurestatsortinfos() i=%d ssstate=%d\n",
+        fprintf(debug,_("packagelist[%p]::ensurestatsortinfos() i=%d ssstate=%d\n"),
                 this,index,table[index]->ssstate);
   
     }
     calcsssdone= 1;
     break;
   default:
-    internerr("unknown statsortorder in ensurestatsortinfo");
+    internerr(_("unknown statsortorder in ensurestatsortinfo"));
   }
 }
 

+ 19 - 19
dselect/pkgsublist.cc

@@ -34,12 +34,12 @@ extern "C" {
 #include "bindings.h"
 
 void packagelist::add(pkginfo *pkg) {
-  if (debug) fprintf(debug,"packagelist[%p]::add(pkginfo %s)\n",this,pkg->name);
+  if (debug) fprintf(debug,_("packagelist[%p]::add(pkginfo %s)\n"),this,pkg->name);
   if (!recursive ||  // never add things to top level
       !pkg->clientdata ||  // don't add pure virtual packages
       pkg->clientdata->uprec)  // don't add ones already in the recursive list
     return;
-  if (debug) fprintf(debug,"packagelist[%p]::add(pkginfo %s) adding\n",this,pkg->name);
+  if (debug) fprintf(debug,_("packagelist[%p]::add(pkginfo %s) adding\n"),this,pkg->name);
   perpackagestate *state= &datatable[nitems];
   state->pkg= pkg;
   state->direct= state->original= pkg->clientdata->selected;
@@ -53,15 +53,15 @@ void packagelist::add(pkginfo *pkg) {
 }   
 
 void packagelist::add(pkginfo *pkg, pkginfo::pkgwant nw) {
-  if (debug) fprintf(debug,"packagelist[%p]::add(pkginfo %s, %s)\n",
-                     this,pkg->name,wantstrings[nw]);
+  if (debug) fprintf(debug,_("packagelist[%p]::add(pkginfo %s, %s)\n"),
+                     this,pkg->name,gettext(wantstrings[nw]));
   add(pkg);  if (!pkg->clientdata) return;
   pkg->clientdata->direct= nw;
   selpriority np;
   np= would_like_to_install(nw,pkg) ? sp_selecting : sp_deselecting;
   if (pkg->clientdata->spriority > np) return;
-  if (debug) fprintf(debug,"packagelist[%p]::add(pkginfo %s, %s) setting\n",
-                     this,pkg->name,wantstrings[nw]);
+  if (debug) fprintf(debug,_("packagelist[%p]::add(pkginfo %s, %s) setting\n"),
+                     this,pkg->name,gettext(wantstrings[nw]));
   pkg->clientdata->suggested= pkg->clientdata->selected= nw;
   pkg->clientdata->spriority= np;
     
@@ -69,7 +69,7 @@ void packagelist::add(pkginfo *pkg, pkginfo::pkgwant nw) {
 
 void packagelist::add(pkginfo *pkg, const char *extrainfo, showpriority showimp) {
   if (debug)
-    fprintf(debug,"packagelist[%p]::add(pkginfo %s, \"...\", showpriority %d)\n",
+    fprintf(debug,_("packagelist[%p]::add(pkginfo %s, \"...\", showpriority %d)\n"),
             this,pkg->name,showimp);
   add(pkg);  if (!pkg->clientdata) return;
   if (pkg->clientdata->dpriority < showimp) pkg->clientdata->dpriority= showimp;
@@ -82,7 +82,7 @@ int packagelist::alreadydone(doneent **done, void *check) {
   
   for (search= *done; search && search->dep != check; search=search->next);
   if (search) return 1;
-  if (debug) fprintf(debug,"packagelist[%p]::alreadydone(%p,%p) new\n",
+  if (debug) fprintf(debug,_("packagelist[%p]::alreadydone(%p,%p) new\n"),
                      this,done,check);
   search= new doneent;
   search->next= *done;
@@ -92,7 +92,7 @@ int packagelist::alreadydone(doneent **done, void *check) {
 }
 
 void packagelist::addunavailable(deppossi *possi) {
-  if (debug) fprintf(debug,"packagelist[%p]::addunavail(%p)\n",this,possi);
+  if (debug) fprintf(debug,_("packagelist[%p]::addunavail(%p)\n"),this,possi);
 
   if (!recursive) return;
   if (alreadydone(&unavdone,possi)) return;
@@ -106,7 +106,7 @@ void packagelist::addunavailable(deppossi *possi) {
 }
 
 int packagelist::add(dependency *depends, showpriority displayimportance) {
-  if (debug) fprintf(debug,"packagelist[%p]::add(dependency[%p])\n",this,depends);
+  if (debug) fprintf(debug,_("packagelist[%p]::add(dependency[%p])\n"),this,depends);
 
   if (alreadydone(&depsdone,depends)) return 0;
   
@@ -114,7 +114,7 @@ int packagelist::add(dependency *depends, showpriority displayimportance) {
   varbuf info;
   info(depends->up->name);
   info(' ');
-  info(relatestrings[depends->type]);
+  info(gettext(relatestrings[depends->type]));
   info(' ');
   deppossi *possi;
   for (possi=depends->list;
@@ -129,7 +129,7 @@ int packagelist::add(dependency *depends, showpriority displayimportance) {
       case dvr_earlierstrict: info(" (<< "); break;
       case dvr_laterstrict:   info(" (>> "); break;
       case dvr_exact:         info(" (= "); break;
-      default: internerr("unknown verrel");
+      default: internerr(_("unknown verrel"));
       }
       info(versiondescribe(&possi->version,vdew_never));
       info(")");
@@ -161,29 +161,29 @@ void repeatedlydisplay(packagelist *sub,
   pkginfo **newl;
   keybindings *kb;
   
-  if (debug) fprintf(debug,"repeatedlydisplay(packagelist[%p])\n",sub);
+  if (debug) fprintf(debug,_("repeatedlydisplay(packagelist[%p])\n"),sub);
   if (sub->resolvesuggest() != 0 && sub->deletelessimp_anyleft(initial)) {
-    if (debug) fprintf(debug,"repeatedlydisplay(packagelist[%p]) once\n",sub);
+    if (debug) fprintf(debug,_("repeatedlydisplay(packagelist[%p]) once\n"),sub);
     if (unredisplay) unredisplay->enddisplay();
     for (;;) {
       newl= sub->display();
       if (!newl) break;
-      if (debug) fprintf(debug,"repeatedlydisplay(packagelist[%p]) newl\n",sub);
+      if (debug) fprintf(debug,_("repeatedlydisplay(packagelist[%p]) newl\n"),sub);
       kb= sub->bindings; delete sub;
       sub= new packagelist(kb,newl);
       if (sub->resolvesuggest() <= 1) break;
       if (!sub->deletelessimp_anyleft(dp_must)) break;
-      if (debug) fprintf(debug,"repeatedlydisplay(packagelist[%p]) again\n",sub);
+      if (debug) fprintf(debug,_("repeatedlydisplay(packagelist[%p]) again\n"),sub);
     }
     if (unredisplay) unredisplay->startdisplay();
   }
   delete sub;
-  if (debug) fprintf(debug,"repeatedlydisplay(packagelist[%p]) done\n",sub);
+  if (debug) fprintf(debug,_("repeatedlydisplay(packagelist[%p]) done\n"),sub);
 }
 
 int packagelist::deletelessimp_anyleft(showpriority than) {
   if (debug)
-    fprintf(debug,"packagelist[%p]::dli_al(%d): nitems=%d\n",this,than,nitems);
+    fprintf(debug,_("packagelist[%p]::dli_al(%d): nitems=%d\n"),this,than,nitems);
   int insat, runthr;
   for (runthr=0, insat=0;
        runthr < nitems;
@@ -196,7 +196,7 @@ int packagelist::deletelessimp_anyleft(showpriority than) {
     }
   }
   nitems= insat;
-  if (debug) fprintf(debug,"packagelist[%p]::dli_al(%d) done; nitems=%d\n",
+  if (debug) fprintf(debug,_("packagelist[%p]::dli_al(%d) done; nitems=%d\n"),
                      this,than,nitems);
   return nitems;
 }

+ 28 - 28
dselect/pkgtop.cc

@@ -41,7 +41,7 @@ const char *pkgprioritystring(const struct pkginfo *pkg) {
     return pkg->otherpriority;
   } else {
     assert(pkg->priority <= pkginfo::pri_unknown);
-    return prioritystrings[pkg->priority];
+    return gettext(prioritystrings[pkg->priority]);
   }
 }
 
@@ -53,7 +53,7 @@ int packagelist::describemany(char buf[], const char *prioritystring,
 
   statindent= 0;
   ssostring= 0;
-  ssoabbrev= "All";
+  ssoabbrev= _("All");
   switch (statsortorder) {
   case sso_avail:
     if (pps->ssavail == -1) break;
@@ -70,30 +70,30 @@ int packagelist::describemany(char buf[], const char *prioritystring,
   case sso_unsorted:
     break;
   default:
-    internerr("unknown statsortrder in describemany all");
+    internerr(_("unknown statsortrder in describemany all"));
   }
   
   if (!prioritystring) {
     if (!section) {
-      strcpy(buf, ssostring ? ssostring : "All packages");
+      strcpy(buf, ssostring ? gettext(ssostring) : _("All packages"));
       return statindent;
     } else {
       if (!*section) {
-        sprintf(buf,"%s packages without a section",ssoabbrev);
+        sprintf(buf,_("%s packages without a section"),gettext(ssoabbrev));
       } else {
-        sprintf(buf,"%s packages in section %s",ssoabbrev,section);
+        sprintf(buf,_("%s packages in section %s"),gettext(ssoabbrev),section);
       }
       return statindent+1;
     }
   } else {
     if (!section) {
-      sprintf(buf,"%s %s packages",ssoabbrev,prioritystring);
+      sprintf(buf,_("%s %s packages"),gettext(ssoabbrev),prioritystring);
       return statindent+1;
     } else {
       if (!*section) {
-        sprintf(buf,"%s %s packages without a section",ssoabbrev,prioritystring);
+        sprintf(buf,_("%s %s packages without a section"),gettext(ssoabbrev),prioritystring);
       } else {
-        sprintf(buf,"%s %s packages in section %s",ssoabbrev,prioritystring,section);
+        sprintf(buf,_("%s %s packages in section %s"),gettext(ssoabbrev),prioritystring,section);
       }
       return statindent+2;
     }
@@ -114,14 +114,14 @@ void packagelist::redrawthisstate() {
     
   if (table[cursorline]->pkg->name) {
     sprintf(buf,
-            "%-*s %s%s%s;  %s (was: %s).  %s",
+            _("%-*s %s%s%s;  %s (was: %s).  %s"),
             package_width,
             table[cursorline]->pkg->name,
-            statusstrings[table[cursorline]->pkg->status],
+            gettext(statusstrings[table[cursorline]->pkg->status]),
             eflagstrings[table[cursorline]->pkg->eflag][0] ? " - " : "",
-            eflagstrings[table[cursorline]->pkg->eflag],
-            wantstrings[table[cursorline]->selected],
-            wantstrings[table[cursorline]->original],
+            gettext(eflagstrings[table[cursorline]->pkg->eflag]),
+            gettext(wantstrings[table[cursorline]->selected]),
+            gettext(wantstrings[table[cursorline]->original]),
             priority);
   } else {
     describemany(buf,priority,section,table[cursorline]->pkg->clientdata);
@@ -147,26 +147,26 @@ void packagelist::redraw1itemsel(int index, int selected) {
 
       mvwprintw(listpad,index,0, "%-*.*s ",
                 status_hold_width, status_hold_width,
-                eflagstrings[pkg->eflag]);
+                gettext(eflagstrings[pkg->eflag]));
       wprintw(listpad, "%-*.*s ",
               status_status_width, status_status_width,
-              statusstrings[pkg->status]);
+              gettext(statusstrings[pkg->status]));
       wprintw(listpad, "%-*.*s ",
               status_want_width, status_want_width,
               /* fixme: keep this ? */
               /*table[index]->original == table[index]->selected ? "(same)"
-              : */wantstrings[table[index]->original]);
+              : */gettext(wantstrings[table[index]->original]));
       wattrset(listpad, selected ? selstatesel_attr : selstate_attr);
       wprintw(listpad, "%-*.*s",
               status_want_width, status_want_width,
-              wantstrings[table[index]->selected]);
+              gettext(wantstrings[table[index]->selected]));
       wattrset(listpad, selected ? listsel_attr : list_attr);
       waddch(listpad, ' ');
   
       mvwprintw(listpad,index,priority_column-1, " %-*.*s",
                 priority_width, priority_width,
                 pkg->priority == pkginfo::pri_other ? pkg->otherpriority :
-                prioritystrings[pkg->priority]);
+                gettext(prioritystrings[pkg->priority]));
 
     } else {
 
@@ -192,7 +192,7 @@ void packagelist::redraw1itemsel(int index, int selected) {
         while (i-- > 0) waddch(listpad,' ');
       } else {
         wprintw(listpad, "%-*.*s", priority_width, priority_width,
-                priorityabbrevs[pkg->priority]);
+                gettext(priorityabbrevs[pkg->priority]));
       }
 
     }
@@ -265,26 +265,26 @@ void packagelist::redrawcolheads() {
       for (int i=0; i<status_width-status_want_width; i++) waddch(colheadspad,'.');
       mvwaddnstr(colheadspad,0,
                  0,
-                 "Error",
+                 _("Error"),
                  status_hold_width);
       mvwaddnstr(colheadspad,0,
                  status_hold_width+1,
-                 "Installed?",
+                 _("Installed?"),
                  status_status_width);
       mvwaddnstr(colheadspad,0,
                  status_hold_width+status_status_width+2,
-                 "Old mark",
+                 _("Old mark"),
                  status_want_width);
       mvwaddnstr(colheadspad,0,
                  status_hold_width+status_status_width+status_want_width+3,
-                 "Marked for",
+                 _("Marked for"),
                  status_want_width);
     } else {
       mvwaddstr(colheadspad,0,0, "EIOM");
     }
-    mvwaddnstr(colheadspad,0,section_column, "Section", section_width);
-    mvwaddnstr(colheadspad,0,priority_column, "Priority", priority_width);
-    mvwaddnstr(colheadspad,0,package_column, "Package", package_width);
+    mvwaddnstr(colheadspad,0,section_column, _("Section"), section_width);
+    mvwaddnstr(colheadspad,0,priority_column, _("Priority"), priority_width);
+    mvwaddnstr(colheadspad,0,package_column, _("Package"), package_width);
 
     if (versioninstalled_width)
       mvwaddnstr(colheadspad,0,versioninstalled_column,
@@ -293,7 +293,7 @@ void packagelist::redrawcolheads() {
       mvwaddnstr(colheadspad,0,versionavailable_column,
                  "Avail.ver",versionavailable_width);
 
-    mvwaddnstr(colheadspad,0,description_column, "Description", description_width);
+    mvwaddnstr(colheadspad,0,description_column, _("Description"), description_width);
   }
   refreshcolheads();
 }

+ 1 - 0
po/.cvsignore

@@ -4,3 +4,4 @@ dpkg.pot
 en.fmo
 fr.gmo
 stamp-cat-id
+POTFILES

+ 16 - 0
po/POTFILES.in

@@ -41,3 +41,19 @@ split/queue.c
 split/split.c
 
 md5sum/md5sum.c
+
+dselect/basecmds.cc
+dselect/baselist.cc
+dselect/bindings.cc
+dselect/main.cc
+dselect/methlist.cc
+dselect/method.cc
+dselect/methparse.cc
+dselect/pkgcmds.cc
+dselect/pkgdepcon.cc
+dselect/pkgdisplay.cc
+dselect/pkginfo.cc
+dselect/pkglist.cc
+dselect/pkgsublist.cc
+dselect/pkgtop.cc
+

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1777 - 257
po/dpkg.pot