--- /dev/null
+From: Julien Viard de Galbert <julien@vdg.blogsite.org>
+Subject: run script to complete gettext patch
+
+This patch is generated by saving the files modified by running
+the script 'lang_po.sh'.
+
+Index: webalizer/dns_resolv.c
+===================================================================
+--- webalizer.orig/dns_resolv.c 2011-01-08 20:59:53.000000000 +0100
++++ webalizer/dns_resolv.c 2011-01-08 20:59:58.000000000 +0100
+@@ -199,7 +199,7 @@
+ DB_CREATE, 0644) != 0) )
+ {
+ /* Error: Unable to open DNS cache file <filename> */
+- if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nodb,dns_cache);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error: Unable to open DNS cache file"),dns_cache);
+ dns_cache=NULL;
+ dns_db=NULL;
+ return 0; /* disable cache */
+@@ -212,7 +212,7 @@
+ if (fcntl(dns_fd,F_SETLK,&tmp_flock) < 0) /* and barf if we cant lock */
+ {
+ /* Error: Unable to lock DNS cache file <filename> */
+- if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nolk,dns_cache);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error: Unable to lock DNS cache file"),dns_cache);
+ dns_db->close(dns_db, 0);
+ dns_cache=NULL;
+ dns_db=NULL;
+@@ -299,7 +299,7 @@
+ if(!l_list)
+ {
+ /* No valid addresses found... */
+- if (verbose>1) printf("%s\n",msg_dns_none);
++ if (verbose>1) printf("%s\n",_("None to process"));
+ tmp_flock.l_type=F_UNLCK;
+ fcntl(dns_fd, F_SETLK, &tmp_flock);
+ dns_db->close(dns_db, 0);
+@@ -316,12 +316,12 @@
+ if (time_me || (verbose>1))
+ {
+ if (verbose<2 && time_me) printf("DNS: ");
+- printf("%llu %s ",listEntries, msg_addresses);
++ printf("%llu %s ",listEntries, _("addresses"));
+
+ /* total processing time in seconds */
+ temp_time = difftime(end_time,start_time);
+ if (temp_time==0) temp_time=1;
+- printf("%s %.0f %s", msg_in, temp_time, msg_seconds);
++ printf("%s %.0f %s", _("in"), temp_time, _("seconds"));
+
+ /* calculate records per second */
+ if (temp_time)
+@@ -774,7 +774,7 @@
+ DB_RDONLY, 0644) != 0) )
+ {
+ /* Error: Unable to open DNS cache file <filename> */
+- if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nodb,dns_cache);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error: Unable to open DNS cache file"),dns_cache);
+ return 0; /* disable cache */
+ }
+
+@@ -784,7 +784,7 @@
+ /* Get shared lock on cache file */
+ if (fcntl(dns_fd, F_SETLK, &tmp_flock) < 0)
+ {
+- if (verbose) fprintf(stderr,"%s %s\n",msg_dns_nolk,dns_cache);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error: Unable to lock DNS cache file"),dns_cache);
+ dns_db->close(dns_db, 0);
+ return 0;
+ }
+Index: webalizer/graphs.c
+===================================================================
+--- webalizer.orig/graphs.c 2011-01-08 20:59:53.000000000 +0100
++++ webalizer/graphs.c 2011-01-08 20:59:58.000000000 +0100
+@@ -141,68 +141,68 @@
+ if (graph_legend)
+ {
+ /* Kbytes Legend */
+- i = (strlen(msg_h_xfer)*6);
++ i = (strlen(_("kB F"))*6);
+ if (dump_inout == 0)
+ {
+ gdImageString(im,gdFontSmall,491-i,237,
+- (unsigned char *)msg_h_xfer,dkgrey);
++ (unsigned char *)_("kB F"),dkgrey);
+ gdImageString(im,gdFontSmall,490-i,236,
+- (unsigned char *)msg_h_xfer,KBYTECOLOR);
++ (unsigned char *)_("kB F"),KBYTECOLOR);
+ }
+ else
+ {
+- j = (strlen(msg_h_ixfer)*6);
+- k = (strlen(msg_h_oxfer)*6);
++ j = (strlen(_("kB In"))*6);
++ k = (strlen(_("kB Out"))*6);
+ gdImageString(im,gdFontSmall,491-i-j-k-24,237,
+- (unsigned char *)msg_h_xfer,dkgrey);
++ (unsigned char *)_("kB F"),dkgrey);
+ gdImageString(im,gdFontSmall,490-i-j-k-24,236,
+- (unsigned char *)msg_h_xfer,KBYTECOLOR);
++ (unsigned char *)_("kB F"),KBYTECOLOR);
+ gdImageString(im,gdFontSmall,491-k-j-21,237,"/",dkgrey);
+ gdImageString(im,gdFontSmall,490-k-j-21,236,"/",black);
+ gdImageString(im,gdFontSmall,491-k-j-12,237,
+- (unsigned char *)msg_h_ixfer,dkgrey);
++ (unsigned char *)_("kB In"),dkgrey);
+ gdImageString(im,gdFontSmall,490-k-j-12,236,
+- (unsigned char *)msg_h_ixfer,IKBYTECOLOR);
++ (unsigned char *)_("kB In"),IKBYTECOLOR);
+ gdImageString(im,gdFontSmall,491-k-9,237,"/",dkgrey);
+ gdImageString(im,gdFontSmall,490-k-9,236,"/",black);
+ gdImageString(im,gdFontSmall,491-k,237,
+- (unsigned char *)msg_h_oxfer,dkgrey);
++ (unsigned char *)_("kB Out"),dkgrey);
+ gdImageString(im,gdFontSmall,490-k,236,
+- (unsigned char *)msg_h_oxfer,OKBYTECOLOR);
++ (unsigned char *)_("kB Out"),OKBYTECOLOR);
+ }
+ /* Sites/Visits Legend */
+- i = (strlen(msg_h_visits)*6);
+- j = (strlen(msg_h_sites)*6);
++ i = (strlen(_("Visits"))*6);
++ j = (strlen(_("Sites"))*6);
+ gdImageString(im,gdFontSmall,491-i-j-12,11,
+- (unsigned char *)msg_h_visits,dkgrey);
++ (unsigned char *)_("Visits"),dkgrey);
+ gdImageString(im,gdFontSmall,490-i-j-12,10,
+- (unsigned char *)msg_h_visits,VISITCOLOR);
++ (unsigned char *)_("Visits"),VISITCOLOR);
+ gdImageString(im,gdFontSmall,491-j-9,11,(unsigned char *)"/",dkgrey);
+ gdImageString(im,gdFontSmall,490-j-9,10,(unsigned char *)"/",black);
+ gdImageString(im,gdFontSmall,491-j,11,
+- (unsigned char *)msg_h_sites,dkgrey);
++ (unsigned char *)_("Sites"),dkgrey);
+ gdImageString(im,gdFontSmall,490-j,10,
+- (unsigned char *)msg_h_sites,SITECOLOR);
++ (unsigned char *)_("Sites"),SITECOLOR);
+
+ /* Hits/Files/Pages Legend */
+- i = (strlen(msg_h_pages)*6);
+- j = (strlen(msg_h_files)*6);
++ i = (strlen(_("Pages"))*6);
++ j = (strlen(_("Files"))*6);
+ gdImageStringUp(im,gdFontSmall,6,231,
+- (unsigned char *)msg_h_pages,dkgrey);
++ (unsigned char *)_("Pages"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,5,230,
+- (unsigned char *)msg_h_pages,PAGECOLOR);
++ (unsigned char *)_("Pages"),PAGECOLOR);
+ gdImageStringUp(im,gdFontSmall,6,231-i-3,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,5,230-i-3,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,6,231-i-12,
+- (unsigned char *)msg_h_files,dkgrey);
++ (unsigned char *)_("Files"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,5,230-i-12,
+- (unsigned char *)msg_h_files,FILECOLOR);
++ (unsigned char *)_("Files"),FILECOLOR);
+ gdImageStringUp(im,gdFontSmall,6,231-i-j-15,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,5,230-i-j-15,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,6,231-i-j-24,
+- (unsigned char *)msg_h_hits,dkgrey);
++ (unsigned char *)_("Hits"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,5,230-i-j-24,
+- (unsigned char *)msg_h_hits,HITCOLOR);
++ (unsigned char *)_("Hits"),HITCOLOR);
+ }
+
+ /* Now draw data areas */
+@@ -402,7 +402,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),fname);
+ return(EBADF);
+ }
+ }
+@@ -498,60 +498,60 @@
+ {
+ /* Kbytes Legend */
+ gdImageStringUp(im,gdFontSmall,494,376,
+- (unsigned char *)msg_h_xfer,dkgrey);
++ (unsigned char *)_("kB F"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,375,
+- (unsigned char *)msg_h_xfer,KBYTECOLOR);
++ (unsigned char *)_("kB F"),KBYTECOLOR);
+ if (dump_inout != 0)
+ {
+- i=(strlen(msg_h_xfer)*6);
+- j=(strlen(msg_h_ixfer)*6);
++ i=(strlen(_("kB F"))*6);
++ j=(strlen(_("kB In"))*6);
+ gdImageStringUp(im,gdFontSmall,494,376-i-3,"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,375-i-3,"/",black);
+ gdImageStringUp(im,gdFontSmall,494,376-i-12,
+- (unsigned char *)msg_h_ixfer,dkgrey);
++ (unsigned char *)_("kB In"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,375-i-12,
+- (unsigned char *)msg_h_ixfer,IKBYTECOLOR);
++ (unsigned char *)_("kB In"),IKBYTECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,376-i-j-15,"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,375-i-j-15,"/",black);
+ gdImageStringUp(im,gdFontSmall,494,376-i-j-24,
+- (unsigned char *)msg_h_oxfer,dkgrey);
++ (unsigned char *)_("kB Out"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,375-i-j-24,
+- (unsigned char *)msg_h_oxfer,OKBYTECOLOR);
++ (unsigned char *)_("kB Out"),OKBYTECOLOR);
+ }
+
+ /* Sites/Visits Legend */
+- i = (strlen(msg_h_sites)*6);
++ i = (strlen(_("Sites"))*6);
+ gdImageStringUp(im,gdFontSmall,494,256,
+- (unsigned char *)msg_h_sites,dkgrey);
++ (unsigned char *)_("Sites"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,255,
+- (unsigned char *)msg_h_sites,SITECOLOR);
++ (unsigned char *)_("Sites"),SITECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,256-i-3,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,255-i-3,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,494,256-i-12,
+- (unsigned char *)msg_h_visits,dkgrey);
++ (unsigned char *)_("Visits"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,255-i-12,
+- (unsigned char *)msg_h_visits,VISITCOLOR);
++ (unsigned char *)_("Visits"),VISITCOLOR);
+
+ /* Pages/Files/Hits Legend */
+- s = ( i=(strlen(msg_h_pages)*6) )+
+- ( j=(strlen(msg_h_files)*6) )+
+- ( strlen(msg_h_hits)*6 )+ 52;
++ s = ( i=(strlen(_("Pages"))*6) )+
++ ( j=(strlen(_("Files"))*6) )+
++ ( strlen(_("Hits"))*6 )+ 52;
+ gdImageStringUp(im,gdFontSmall,494,s,
+- (unsigned char *)msg_h_pages,dkgrey);
++ (unsigned char *)_("Pages"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-1,
+- (unsigned char *)msg_h_pages,PAGECOLOR);
++ (unsigned char *)_("Pages"),PAGECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,s-i-3,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-4,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,494,s-i-12,
+- (unsigned char *)msg_h_files,dkgrey);
++ (unsigned char *)_("Files"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-13,
+- (unsigned char *)msg_h_files,FILECOLOR);
++ (unsigned char *)_("Files"),FILECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,s-i-j-15,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-j-16,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,494,s-i-j-24,
+- (unsigned char *)msg_h_hits,dkgrey);
++ (unsigned char *)_("Hits"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-j-25,
+- (unsigned char *)msg_h_hits,HITCOLOR);
++ (unsigned char *)_("Hits"),HITCOLOR);
+ }
+
+ /* data1 */
+@@ -696,7 +696,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),fname);
+ return(EBADF);
+ }
+ }
+@@ -758,25 +758,25 @@
+ if (graph_legend) /* print color coded legends? */
+ {
+ /* Pages/Files/Hits Legend */
+- s = ( i=(strlen(msg_h_pages)*6) )+
+- ( j=(strlen(msg_h_files)*6) )+
+- ( strlen(msg_h_hits)*6 )+ 52;
++ s = ( i=(strlen(_("Pages"))*6) )+
++ ( j=(strlen(_("Files"))*6) )+
++ ( strlen(_("Hits"))*6 )+ 52;
+ gdImageStringUp(im,gdFontSmall,494,s,
+- (unsigned char *)msg_h_pages,dkgrey);
++ (unsigned char *)_("Pages"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-1,
+- (unsigned char *)msg_h_pages,PAGECOLOR);
++ (unsigned char *)_("Pages"),PAGECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,s-i-3,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-4,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,494,s-i-12,
+- (unsigned char *)msg_h_files,dkgrey);
++ (unsigned char *)_("Files"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-13,
+- (unsigned char *)msg_h_files,FILECOLOR);
++ (unsigned char *)_("Files"),FILECOLOR);
+ gdImageStringUp(im,gdFontSmall,494,s-i-j-15,(unsigned char *)"/",dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-j-16,(unsigned char *)"/",black);
+ gdImageStringUp(im,gdFontSmall,494,s-i-j-24,
+- (unsigned char *)msg_h_hits,dkgrey);
++ (unsigned char *)_("Hits"),dkgrey);
+ gdImageStringUp(im,gdFontSmall,493,s-i-j-25,
+- (unsigned char *)msg_h_hits,HITCOLOR);
++ (unsigned char *)_("Hits"),HITCOLOR);
+ }
+
+ /* data1 */
+@@ -822,7 +822,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),fname);
+ return(EBADF);
+ }
+ }
+@@ -913,7 +913,7 @@
+
+ gdImageFill(im, gdata.mx, gdata.my, white);
+ snprintf(buffer,sizeof(buffer),"%s (%d%%)",
+- msg_h_other,100-(int)(s_arc*100));
++ _("Other"),100-(int)(s_arc*100));
+ x=480-(strlen(buffer)*7);
+ gdImageString(im,gdFontMediumBold, x+1, y+1,
+ (unsigned char *)buffer, black);
+@@ -928,7 +928,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),fname);
+ return(EBADF);
+ }
+ }
+Index: webalizer/hashtab.c
+===================================================================
+--- webalizer.orig/hashtab.c 2011-01-08 20:59:30.000000000 +0100
++++ webalizer/hashtab.c 2011-01-08 20:59:58.000000000 +0100
+@@ -119,7 +119,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_hnode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_hnode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -338,7 +338,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_unode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_unode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -474,7 +474,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_rnode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_rnode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -600,7 +600,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_anode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_anode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -719,7 +719,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_snode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_snode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -826,7 +826,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_inode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_inode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+@@ -1006,7 +1006,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"[new_dnode] %s (%d)",msg_big_one,strlen(str));
++ fprintf(stderr,"[new_dnode] %s (%d)",_("Warning: String exceeds storage size"),strlen(str));
+ if (debug_mode)
+ fprintf(stderr,":\n--> %s",str);
+ fprintf(stderr,"\n");
+Index: webalizer/linklist.c
+===================================================================
+--- webalizer.orig/linklist.c 2011-01-08 20:36:44.000000000 +0100
++++ webalizer/linklist.c 2011-01-08 20:59:58.000000000 +0100
+@@ -106,7 +106,7 @@
+ if (sizeof(newptr->string) < strlen(str))
+ {
+ if (verbose)
+- fprintf(stderr,"[new_nlist] %s\n",msg_big_one);
++ fprintf(stderr,"[new_nlist] %s\n",_("Warning: String exceeds storage size"));
+ }
+ if (( newptr = malloc(sizeof(struct nlist))) != NULL)
+ {strncpy(newptr->string, str, sizeof(newptr->string));newptr->next=NULL;}
+@@ -163,7 +163,7 @@
+ sizeof(newptr->name) < strlen(name))
+ {
+ if (verbose)
+- fprintf(stderr,"[new_glist] %s\n",msg_big_one);
++ fprintf(stderr,"[new_glist] %s\n",_("Warning: String exceeds storage size"));
+ }
+ if (( newptr = malloc(sizeof(struct glist))) != NULL)
+ {
+Index: webalizer/output.c
+===================================================================
+--- webalizer.orig/output.c 2011-01-08 20:59:53.000000000 +0100
++++ webalizer/output.c 2011-01-08 20:59:58.000000000 +0100
+@@ -189,9 +189,9 @@
+ fprintf(out_fp,"<!-- -->\n");
+ fprintf(out_fp,"<!-- *** Generated: %s *** -->\n\n",cur_time());
+
+- fprintf(out_fp,"<HTML lang=\"%s\">\n<HEAD>\n",langcode);
++ fprintf(out_fp,"<HTML lang=\"%s\">\n<HEAD>\n",_("en"));
+ fprintf(out_fp," <TITLE>%s %s - %s</TITLE>\n",
+- report_title, hname, (period)?period:msg_main_per);
++ report_title, hname, (period)?period:_("Summary by Month"));
+ lptr=html_head;
+ while (lptr!=NULL)
+ {
+@@ -215,10 +215,10 @@
+ }
+ fprintf(out_fp,"<H2>%s %s</H2>\n",report_title, hname);
+ if (period)
+- fprintf(out_fp,"<SMALL><STRONG>\n%s: %s<BR>\n",msg_hhdr_sp,period);
++ fprintf(out_fp,"<SMALL><STRONG>\n%s: %s<BR>\n",_("Summary Period"),period);
+ else
+- fprintf(out_fp,"<SMALL><STRONG>\n%s<BR>\n",msg_main_per);
+- fprintf(out_fp,"%s %s<BR>\n</STRONG></SMALL>\n",msg_hhdr_gt,cur_time());
++ fprintf(out_fp,"<SMALL><STRONG>\n%s<BR>\n",_("Summary by Month"));
++ fprintf(out_fp,"%s %s<BR>\n</STRONG></SMALL>\n",_("Generated"),cur_time());
+ lptr=html_post;
+ while (lptr!=NULL)
+ {
+@@ -289,7 +289,7 @@
+ char htitle[256];
+
+ if (verbose>1)
+- printf("%s %s %d\n",msg_gen_rpt, Q_(l_month[cur_month-1]), cur_year);
++ printf("%s %s %d\n",_("Generating report for"), Q_(l_month[cur_month-1]), cur_year);
+
+ /* fill in filenames */
+ snprintf(html_fname,sizeof(html_fname),"usage_%04d%02d.%s",
+@@ -301,7 +301,7 @@
+ if (daily_graph)
+ {
+ snprintf(dtitle,sizeof(dtitle),"%s %s %d",
+- msg_hmth_du,Q_(l_month[cur_month-1]),cur_year);
++ _("Daily usage for"),Q_(l_month[cur_month-1]),cur_year);
+ month_graph6 ( png1_fname, /* filename */
+ dtitle, /* graph title */
+ cur_month, /* graph month */
+@@ -319,7 +319,7 @@
+ if (hourly_graph)
+ {
+ snprintf(htitle,sizeof(htitle),"%s %s %d",
+- msg_hmth_hu,Q_(l_month[cur_month-1]),cur_year);
++ _("Hourly usage for"),Q_(l_month[cur_month-1]),cur_year);
+ day_graph3( png2_fname,
+ htitle,
+ th_hit,
+@@ -371,7 +371,7 @@
+ {qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmpx); top_entry_table(1);}
+ free(u_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [u_array]\n",msg_nomem_tu); /* err */
++ else if (verbose) fprintf(stderr,"%s [u_array]\n",_("Can't allocate enough memory, Top URLs disabled!")); /* err */
+ }
+
+ /* do hostname (sites) related stuff here, sorting appropriately... */
+@@ -393,7 +393,7 @@
+ }
+ free(h_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [h_array]\n",msg_nomem_ts); /* err */
++ else if (verbose) fprintf(stderr,"%s [h_array]\n",_("Can't allocate enough memory, Top Sites disabled!")); /* err */
+ }
+
+ /* do referrer related stuff here, sorting appropriately... */
+@@ -410,7 +410,7 @@
+ }
+ free(r_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [r_array]\n",msg_nomem_tr); /* err */
++ else if (verbose) fprintf(stderr,"%s [r_array]\n",_("Can't allocate enough memory, Top Referrers disabled!")); /* err */
+ }
+
+ /* do search string related stuff, sorting appropriately... */
+@@ -427,7 +427,7 @@
+ }
+ free(s_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [s_array]\n",msg_nomem_tsr);/* err */
++ else if (verbose) fprintf(stderr,"%s [s_array]\n",_("Can't allocate enough memory, Top Search Strings disabled!"));/* err */
+ }
+
+ /* do ident (username) related stuff here, sorting appropriately... */
+@@ -444,7 +444,7 @@
+ }
+ free(i_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [i_array]\n",msg_nomem_ti); /* err */
++ else if (verbose) fprintf(stderr,"%s [i_array]\n",_("Can't allocate enough memory, Top Usernames disabled!")); /* err */
+ }
+
+ /* do user agent related stuff here, sorting appropriately... */
+@@ -461,7 +461,7 @@
+ }
+ free(a_array);
+ }
+- else if (verbose) fprintf(stderr,"%s [a_array]\n",msg_nomem_ta); /* err */
++ else if (verbose) fprintf(stderr,"%s [a_array]\n",_("Can't allocate enough memory, Top User Agents disabled!")); /* err */
+ }
+
+ if (ntop_ctrys ) top_ctry_table(); /* top countries table */
+@@ -479,27 +479,27 @@
+ {
+ fprintf(out_fp,"<SMALL>\n");
+ if (daily_stats || daily_graph)
+- fprintf(out_fp,"<A HREF=\"#DAYSTATS\">[%s]</A>\n",msg_hlnk_ds);
++ fprintf(out_fp,"<A HREF=\"#DAYSTATS\">[%s]</A>\n",_("Daily Statistics"));
+ if (hourly_stats || hourly_graph)
+- fprintf(out_fp,"<A HREF=\"#HOURSTATS\">[%s]</A>\n",msg_hlnk_hs);
++ fprintf(out_fp,"<A HREF=\"#HOURSTATS\">[%s]</A>\n",_("Hourly Statistics"));
+ if (ntop_urls || ntop_urlsK)
+- fprintf(out_fp,"<A HREF=\"#TOPURLS\">[%s]</A>\n",msg_hlnk_u);
++ fprintf(out_fp,"<A HREF=\"#TOPURLS\">[%s]</A>\n",_("URLs"));
+ if (ntop_entry)
+- fprintf(out_fp,"<A HREF=\"#TOPENTRY\">[%s]</A>\n",msg_hlnk_en);
++ fprintf(out_fp,"<A HREF=\"#TOPENTRY\">[%s]</A>\n",_("Entry"));
+ if (ntop_exit)
+- fprintf(out_fp,"<A HREF=\"#TOPEXIT\">[%s]</A>\n",msg_hlnk_ex);
++ fprintf(out_fp,"<A HREF=\"#TOPEXIT\">[%s]</A>\n",_("Exit"));
+ if (ntop_sites || ntop_sitesK)
+- fprintf(out_fp,"<A HREF=\"#TOPSITES\">[%s]</A>\n",msg_hlnk_s);
++ fprintf(out_fp,"<A HREF=\"#TOPSITES\">[%s]</A>\n",_("Sites"));
+ if (ntop_refs && t_ref)
+- fprintf(out_fp,"<A HREF=\"#TOPREFS\">[%s]</A>\n",msg_hlnk_r);
++ fprintf(out_fp,"<A HREF=\"#TOPREFS\">[%s]</A>\n",_("Referrers"));
+ if (ntop_search)
+- fprintf(out_fp,"<A HREF=\"#TOPSEARCH\">[%s]</A>\n",msg_hlnk_sr);
++ fprintf(out_fp,"<A HREF=\"#TOPSEARCH\">[%s]</A>\n",_("Search"));
+ if (ntop_users && t_user)
+- fprintf(out_fp,"<A HREF=\"#TOPUSERS\">[%s]</A>\n",msg_hlnk_i);
++ fprintf(out_fp,"<A HREF=\"#TOPUSERS\">[%s]</A>\n",_("Users"));
+ if (ntop_agents && t_agent)
+- fprintf(out_fp,"<A HREF=\"#TOPAGENTS\">[%s]</A>\n",msg_hlnk_a);
++ fprintf(out_fp,"<A HREF=\"#TOPAGENTS\">[%s]</A>\n",_("Agents"));
+ if (ntop_ctrys)
+- fprintf(out_fp,"<A HREF=\"#TOPCTRYS\">[%s]</A>\n",msg_hlnk_c);
++ fprintf(out_fp,"<A HREF=\"#TOPCTRYS\">[%s]</A>\n",_("Countries"));
+ fprintf(out_fp,"</SMALL>\n<P>\n");
+ }
+
+@@ -529,36 +529,36 @@
+ fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH COLSPAN=3 ALIGN=center BGCOLOR=\"%s\">" \
+- "%s %s %d</TH></TR>\n",GREY,msg_mtot_ms,Q_(l_month[cur_month-1]),cur_year);
++ "%s %s %d</TH></TR>\n",GREY,_("Monthly Statistics for"),Q_(l_month[cur_month-1]),cur_year);
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ /* Total Hits */
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_th,t_hit);
++ "</FONT></TD></TR>\n",_("Total Hits"),t_hit);
+ /* Total Files */
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_tf,t_file);
++ "</FONT></TD></TR>\n",_("Total Files"),t_file);
+ /* Total Pages */
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s %s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_h_total, msg_h_pages, t_page);
++ "</FONT></TD></TR>\n",_("Total"), _("Pages"), t_page);
+ /* Total Visits */
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s %s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_h_total, msg_h_visits, t_visit);
++ "</FONT></TD></TR>\n",_("Total"), _("Visits"), t_visit);
+ /* Total XFer */
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_tx,t_xfer/1024);
++ "</FONT></TD></TR>\n",_("Total kB Files"),t_xfer/1024);
+ if (dump_inout != 0)
+ {
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ix,t_ixfer/1024);
++ "</FONT></TD></TR>\n",_("Total kB In"),t_ixfer/1024);
+ fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ox,t_oxfer/1024);
++ "</FONT></TD></TR>\n",_("Total kB Out"),t_oxfer/1024);
+ }
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ /**********************************************/
+@@ -566,30 +566,30 @@
+ fprintf(out_fp,"<TR>" \
+ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_us,t_site);
++ "</FONT></TD></TR>\n",_("Total Unique Sites"),t_site);
+ /* Unique URLs */
+ fprintf(out_fp,"<TR>" \
+ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_uu,t_url);
++ "</FONT></TD></TR>\n",_("Total Unique URLs"),t_url);
+ /* Unique Referrers */
+ if (t_ref != 0)
+ fprintf(out_fp,"<TR>" \
+ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ur,t_ref);
++ "</FONT></TD></TR>\n",_("Total Unique Referrers"),t_ref);
+ /* Unique Usernames */
+ if (t_user != 0)
+ fprintf(out_fp,"<TR>" \
+ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ui,t_user);
++ "</FONT></TD></TR>\n",_("Total Unique Usernames"),t_user);
+ /* Unique Agents */
+ if (t_agent != 0)
+ fprintf(out_fp,"<TR>" \
+ "<TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right COLSPAN=2><FONT SIZE=\"-1\"><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ua,t_agent);
++ "</FONT></TD></TR>\n",_("Total Unique User Agents"),t_agent);
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ /**********************************************/
+ /* Hourly/Daily avg/max totals */
+@@ -599,50 +599,50 @@
+ "<FONT SIZE=-1>%s </FONT></TH>\n" \
+ "<TH WIDTH=65 BGCOLOR=\"%s\" ALIGN=right>" \
+ "<FONT SIZE=-1>%s </FONT></TH></TR>\n",
+- GREY,GREY,GREY,msg_h_avg,GREY,msg_h_max);
++ GREY,GREY,GREY,_("Avg"),GREY,_("Max"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ /* Max/Avg Hits per Hour */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mhh, t_hit/(24*days_in_month),mh_hit);
++ "</FONT></TD></TR>\n",_("Hits per Hour"), t_hit/(24*days_in_month),mh_hit);
+ /* Max/Avg Hits per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mhd, t_hit/days_in_month, max_hits);
++ "</FONT></TD></TR>\n",_("Hits per Day"), t_hit/days_in_month, max_hits);
+ /* Max/Avg Files per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mfd, t_file/days_in_month,max_files);
++ "</FONT></TD></TR>\n",_("Files per Day"), t_file/days_in_month,max_files);
+ /* Max/Avg Pages per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mpd, t_page/days_in_month,max_pages);
++ "</FONT></TD></TR>\n",_("Pages per Day"), t_page/days_in_month,max_pages);
+ /* Max/Avg Sites per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_msd, t_site/days_in_month,max_sites);
++ "</FONT></TD></TR>\n",_("Sites per Day"), t_site/days_in_month,max_sites);
+ /* Max/Avg Visits per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%llu</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%llu</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mvd, t_visit/days_in_month,max_visits);
++ "</FONT></TD></TR>\n",_("Visits per Day"), t_visit/days_in_month,max_visits);
+ /* Max/Avg KBytes per Day */
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_mkd,
++ "</FONT></TD></TR>\n",_("kB Files per Day"),
+ (t_xfer/1024)/days_in_month,max_xfer/1024);
+ if (dump_inout != 0)
+ {
+@@ -650,20 +650,20 @@
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_ikd,
++ "</FONT></TD></TR>\n",_("kB In per Day"),
+ (t_ixfer/1024)/days_in_month,max_ixfer/1024);
+ fprintf(out_fp,"<TR>" \
+ "<TD><FONT SIZE=\"-1\">%s</FONT></TD>\n" \
+ "<TD ALIGN=right WIDTH=65><FONT SIZE=\"-1\"><B>%.0f</B></FONT></TD>\n" \
+ "<TD WIDTH=65 ALIGN=right><FONT SIZE=-1><B>%.0f</B>" \
+- "</FONT></TD></TR>\n",msg_mtot_okd,
++ "</FONT></TD></TR>\n",_("kB Out per Day"),
+ (t_oxfer/1024)/days_in_month,max_oxfer/1024);
+ }
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ /**********************************************/
+ /* response code totals */
+ fprintf(out_fp,"<TR><TH COLSPAN=3 ALIGN=center BGCOLOR=\"%s\">\n" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",GREY,msg_mtot_rc);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",GREY,_("Hits by Response Code"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ for (i=0;i<TOTAL_RC;i++)
+ {
+@@ -694,7 +694,7 @@
+ /* Daily statistics for ... */
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=%d ALIGN=center>" \
+ "%s %s %d</TH></TR>\n",
+- GREY,(dump_inout==0)?13:17,msg_dtot_ds,Q_(l_month[cur_month-1]), cur_year);
++ GREY,(dump_inout==0)?13:17,_("Daily Statistics for"),Q_(l_month[cur_month-1]), cur_year);
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+@@ -710,13 +710,13 @@
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>",
+- GREY, msg_h_day,
+- HITCOLOR, msg_h_hits,
+- FILECOLOR, msg_h_files,
+- PAGECOLOR, msg_h_pages,
+- VISITCOLOR, msg_h_visits,
+- SITECOLOR, msg_h_sites,
+- KBYTECOLOR, msg_h_xfer);
++ GREY, _("Day"),
++ HITCOLOR, _("Hits"),
++ FILECOLOR, _("Files"),
++ PAGECOLOR, _("Pages"),
++ VISITCOLOR, _("Visits"),
++ SITECOLOR, _("Sites"),
++ KBYTECOLOR, _("kB F"));
+ if (dump_inout == 0)
+ {
+ fprintf(out_fp,"</TR>\n");
+@@ -728,8 +728,8 @@
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- IKBYTECOLOR, msg_h_ixfer,
+- OKBYTECOLOR, msg_h_oxfer);
++ IKBYTECOLOR, _("kB In"),
++ OKBYTECOLOR, _("kB Out"));
+ }
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+@@ -807,7 +807,7 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=%d ALIGN=center>"\
+ "%s %s %d</TH></TR>\n",
+- GREY,(dump_inout==0)?13:19,msg_htot_hs,Q_(l_month[cur_month-1]), cur_year);
++ GREY,(dump_inout==0)?13:19,_("Hourly Statistics for"),Q_(l_month[cur_month-1]), cur_year);
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH ALIGN=center ROWSPAN=2 BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+@@ -819,11 +819,11 @@
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>",
+- GREY, msg_h_hour,
+- HITCOLOR, msg_h_hits,
+- FILECOLOR, msg_h_files,
+- PAGECOLOR, msg_h_pages,
+- KBYTECOLOR, msg_h_xfer);
++ GREY, _("Hour"),
++ HITCOLOR, _("Hits"),
++ FILECOLOR, _("Files"),
++ PAGECOLOR, _("Pages"),
++ KBYTECOLOR, _("kB F"));
+ if (dump_inout == 0)
+ {
+ fprintf(out_fp,"</TR>\n");
+@@ -835,29 +835,29 @@
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=3>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- IKBYTECOLOR, msg_h_ixfer,
+- OKBYTECOLOR, msg_h_oxfer);
++ IKBYTECOLOR, _("kB In"),
++ OKBYTECOLOR, _("kB Out"));
+ }
+ fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
+- HITCOLOR, msg_h_avg, HITCOLOR, msg_h_total);
++ HITCOLOR, _("Avg"), HITCOLOR, _("Total"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
+- FILECOLOR, msg_h_avg, FILECOLOR, msg_h_total);
++ FILECOLOR, _("Avg"), FILECOLOR, _("Total"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
+- PAGECOLOR, msg_h_avg, PAGECOLOR, msg_h_total);
++ PAGECOLOR, _("Avg"), PAGECOLOR, _("Total"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT>",
+- KBYTECOLOR, msg_h_avg, KBYTECOLOR, msg_h_total);
++ KBYTECOLOR, _("Avg"), KBYTECOLOR, _("Total"));
+ if (dump_inout == 0)
+ {
+ fprintf(out_fp,"</TR>\n");
+@@ -869,12 +869,12 @@
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n",
+- IKBYTECOLOR, msg_h_avg, IKBYTECOLOR, msg_h_total);
++ IKBYTECOLOR, _("Avg"), IKBYTECOLOR, _("Total"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH>\n" \
+ "<TH ALIGN=center BGCOLOR=\"%s\" COLSPAN=2>" \
+ "<FONT SIZE=\"-2\">%s</FONT></TH></TR>\n",
+- OKBYTECOLOR, msg_h_avg, OKBYTECOLOR, msg_h_total);
++ OKBYTECOLOR, _("Avg"), OKBYTECOLOR, _("Total"));
+ }
+
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+@@ -969,31 +969,31 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %llu %s %llu %s %s %s</TH></TR>\n",
+- GREY,(dump_inout==0)?10:14, msg_top_top,tot_num,msg_top_of,
+- t_site,msg_top_s,msg_h_by,msg_h_xfer);
++ GREY,(dump_inout==0)?10:14, _("Top"),tot_num,_("of"),
++ t_site,_("Total Sites"),_("By"),_("kB F"));
+ else fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY,(dump_inout==0)?10:14,msg_top_top, tot_num, msg_top_of, t_site, msg_top_s);
++ GREY,(dump_inout==0)?10:14,_("Top"), tot_num, _("of"), t_site, _("Total Sites"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,msg_h_hits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,_("Files"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,_("kB F"));
+ if (dump_inout != 0)
+ {
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,msg_h_ixfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,_("kB In"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,msg_h_oxfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,_("kB Out"));
+ }
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,_("Visits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_hname);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,_("Hostname"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=h_array; i=0;
+@@ -1057,7 +1057,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./site_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_sites);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All Sites"));
+ if (flag) /* do we need to sort? */
+ qsort(h_array,a_ctr,sizeof(HNODEPTR),qs_site_cmph);
+ }
+@@ -1085,18 +1085,18 @@
+ if ( (out_fp=open_out_file(site_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_sites);
++ Q_(l_month[cur_month-1]),cur_year,_("Sites"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+ fprintf(out_fp," %12s %12s %12s",
+- msg_h_hits, msg_h_files, msg_h_xfer);
++ _("Hits"), _("Files"), _("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp," %12s %12s", msg_h_ixfer, msg_h_oxfer);
++ fprintf(out_fp," %12s %12s", _("kB In"), _("kB Out"));
+ }
+- fprintf(out_fp," %12s %s\n", msg_h_visits, msg_h_hname);
++ fprintf(out_fp," %12s %s\n", _("Visits"), _("Hostname"));
+ fprintf(out_fp,"---------------- ---------------- ---------------- ");
+ if (dump_inout != 0)
+ {
+@@ -1201,32 +1201,32 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ if (flag) fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %llu %s %llu %s %s %s</TH></TR>\n",
+- GREY,(dump_inout==0)?6:10,msg_top_top,tot_num,msg_top_of,
+- t_url,msg_top_u,msg_h_by,msg_h_xfer);
++ GREY,(dump_inout==0)?6:10,_("Top"),tot_num,_("of"),
++ t_url,_("Total URLs"),_("By"),_("kB F"));
+ else fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY,(dump_inout==0)?6:10,msg_top_top,tot_num,msg_top_of,t_url,msg_top_u);
++ GREY,(dump_inout==0)?6:10,_("Top"),tot_num,_("of"),t_url,_("Total URLs"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- HITCOLOR,msg_h_hits);
++ HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- KBYTECOLOR,msg_h_xfer);
++ KBYTECOLOR,_("kB F"));
+ if (dump_inout!=0)
+ {
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- IKBYTECOLOR,msg_h_ixfer);
++ IKBYTECOLOR,_("kB In"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- OKBYTECOLOR,msg_h_oxfer);
++ OKBYTECOLOR,_("kB Out"));
+ }
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- MISCCOLOR,msg_h_url);
++ MISCCOLOR,_("URL"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=u_array; i=0;
+@@ -1316,7 +1316,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./url_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_urls);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All URLs"));
+ if (flag) /* do we need to sort first? */
+ qsort(u_array,a_ctr,sizeof(UNODEPTR),qs_url_cmph);
+ }
+@@ -1344,17 +1344,17 @@
+ if ( (out_fp=open_out_file(url_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_url);
++ Q_(l_month[cur_month-1]),cur_year,_("URL"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+- fprintf(out_fp," %12s %12s", msg_h_hits,msg_h_xfer);
++ fprintf(out_fp," %12s %12s", _("Hits"),_("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp," %12s %12s", msg_h_ixfer, msg_h_oxfer);
++ fprintf(out_fp," %12s %12s", _("kB In"), _("kB Out"));
+ }
+- fprintf(out_fp," %s\n", msg_h_url);
++ fprintf(out_fp," %s\n", _("URL"));
+ fprintf(out_fp,"---------------- ---------------- ");
+ if (dump_inout != 0)
+ {
+@@ -1461,21 +1461,21 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=6>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY,msg_top_top,tot_num,msg_top_of,
+- (flag)?u_exit:u_entry,(flag)?msg_top_ex:msg_top_en);
++ GREY,_("Top"),tot_num,_("of"),
++ (flag)?u_exit:u_entry,(flag)?_("Total Exit Pages"):_("Total Entry Pages"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",
+ GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- HITCOLOR,msg_h_hits);
++ HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- VISITCOLOR,msg_h_visits);
++ VISITCOLOR,_("Visits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- MISCCOLOR,msg_h_url);
++ MISCCOLOR,_("URL"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=u_array; i=0;
+@@ -1557,17 +1557,17 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=4>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY, msg_top_top, tot_num, msg_top_of, t_ref, msg_top_r);
++ GREY, _("Top"), tot_num, _("of"), t_ref, _("Total Referrers"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",
+ GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- HITCOLOR,msg_h_hits);
++ HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- MISCCOLOR,msg_h_ref);
++ MISCCOLOR,_("Referrer"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=r_array; i=0;
+@@ -1619,7 +1619,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./ref_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_refs);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All Referrers"));
+ }
+ }
+ fprintf(out_fp,"</TABLE>\n<P>\n");
+@@ -1644,12 +1644,12 @@
+ if ( (out_fp=open_out_file(ref_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_ref);
++ Q_(l_month[cur_month-1]),cur_year,_("Referrer"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+- fprintf(out_fp," %12s %s\n",msg_h_hits,msg_h_ref);
++ fprintf(out_fp," %12s %s\n",_("Hits"),_("Referrer"));
+ fprintf(out_fp,"---------------- --------------------\n\n");
+
+ /* do groups first (if any) */
+@@ -1722,17 +1722,17 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=4>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY, msg_top_top, tot_num, msg_top_of, t_agent, msg_top_a);
++ GREY, _("Top"), tot_num, _("of"), t_agent, _("Total User Agents"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",
+ GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- HITCOLOR,msg_h_hits);
++ HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- MISCCOLOR,msg_h_agent);
++ MISCCOLOR,_("User Agent"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=a_array; i=0;
+@@ -1773,7 +1773,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./agent_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_agents);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All User Agents"));
+ }
+ }
+ fprintf(out_fp,"</TABLE>\n<P>\n");
+@@ -1798,12 +1798,12 @@
+ if ( (out_fp=open_out_file(agent_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_agent);
++ Q_(l_month[cur_month-1]),cur_year,_("User Agent"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+- fprintf(out_fp," %12s %s\n",msg_h_hits,msg_h_agent);
++ fprintf(out_fp," %12s %s\n",_("Hits"),_("User Agent"));
+ fprintf(out_fp,"---------------- ----------------------\n\n");
+
+ /* do groups first (if any) */
+@@ -1869,17 +1869,17 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=4>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY, msg_top_top, tot_num, msg_top_of, a_ctr, msg_top_sr);
++ GREY, _("Top"), tot_num, _("of"), a_ctr, _("Total Search Strings"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",
+ GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",
+- HITCOLOR,msg_h_hits);
++ HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",
+- MISCCOLOR,msg_h_search);
++ MISCCOLOR,_("Search String"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=s_array; i=0;
+@@ -1908,7 +1908,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./search_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_search);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All Search Strings"));
+ }
+ }
+ fprintf(out_fp,"</TABLE>\n<P>\n");
+@@ -1934,12 +1934,12 @@
+ if ( (out_fp=open_out_file(search_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_search);
++ Q_(l_month[cur_month-1]),cur_year,_("Search String"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+- fprintf(out_fp," %12s %s\n",msg_h_hits,msg_h_search);
++ fprintf(out_fp," %12s %s\n",_("Hits"),_("Search String"));
+ fprintf(out_fp,"---------------- ----------------------\n\n");
+
+ pointer=s_array;
+@@ -1990,27 +1990,27 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %llu %s %llu %s</TH></TR>\n",
+- GREY,(dump_inout==0)?10:14,msg_top_top, tot_num, msg_top_of, t_user, msg_top_i);
++ GREY,(dump_inout==0)?10:14,_("Top"), tot_num, _("of"), t_user, _("Total Usernames"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,msg_h_hits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,_("Files"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,_("kB F"));
+ if (dump_inout != 0)
+ {
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,msg_h_ixfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,_("kB In"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,msg_h_oxfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,_("kB Out"));
+ }
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,_("Visits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_uname);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,_("Username"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+
+ pointer=i_array; i=0;
+@@ -2073,7 +2073,7 @@
+ fprintf(out_fp,"<FONT SIZE=\"-1\">");
+ fprintf(out_fp,"<A HREF=\"./user_%04d%02d.%s\">",
+ cur_year,cur_month,html_ext);
+- fprintf(out_fp,"%s</A></TD></TR>\n",msg_v_users);
++ fprintf(out_fp,"%s</A></TD></TR>\n",_("View All Usernames"));
+ }
+ }
+ fprintf(out_fp,"</TABLE>\n<P>\n");
+@@ -2098,18 +2098,18 @@
+ if ( (out_fp=open_out_file(user_fname))==NULL ) return 0;
+
+ snprintf(buffer,sizeof(buffer),"%s %d - %s",
+- Q_(l_month[cur_month-1]),cur_year,msg_h_uname);
++ Q_(l_month[cur_month-1]),cur_year,_("Username"));
+ write_html_head(buffer, out_fp);
+
+ fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n");
+
+ fprintf(out_fp," %12s %12s %12s",
+- msg_h_hits, msg_h_files, msg_h_xfer);
++ _("Hits"), _("Files"), _("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp," %12s %12s", msg_h_ixfer, msg_h_oxfer);
++ fprintf(out_fp," %12s %12s", _("kB In"), _("kB Out"));
+ }
+- fprintf(out_fp," %12s %s\n", msg_h_visits, msg_h_uname);
++ fprintf(out_fp," %12s %s\n", _("Visits"), _("Username"));
+ fprintf(out_fp,"---------------- ---------------- ---------------- ");
+ if (dump_inout != 0)
+ {
+@@ -2324,7 +2324,7 @@
+ pie_legend[i]=_(top_ctrys[i]->desc);
+ }
+ snprintf(pie_title,sizeof(pie_title),"%s %s %d",
+- msg_ctry_use,Q_(l_month[cur_month-1]),cur_year);
++ _("Usage by Country for"),Q_(l_month[cur_month-1]),cur_year);
+ sprintf(pie_fname,"ctry_usage_%04d%02d.png",cur_year,cur_month);
+
+ pie_chart(pie_fname,pie_title,t_hit,pie_data,pie_legend); /* do it */
+@@ -2341,25 +2341,25 @@
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=CENTER COLSPAN=%d>" \
+ "%s %d %s %d %s</TH></TR>\n",
+- GREY,(dump_inout==0)?8:12,msg_top_top,tot_num,msg_top_of,tot_ctry,msg_top_c);
++ GREY,(dump_inout==0)?8:12,_("Top"),tot_num,_("of"),tot_ctry,_("Total Countries"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" ALIGN=center>" \
+ "<FONT SIZE=\"-1\">#</FONT></TH>\n",GREY);
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,msg_h_hits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,_("Files"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,_("kB F"));
+ if (dump_inout != 0)
+ {
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,msg_h_ixfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,_("kB In"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center COLSPAN=2>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,msg_h_oxfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,_("kB Out"));
+ }
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=center>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,msg_h_ctry);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",MISCCOLOR,_("Country"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ for (i=0;i<ntop_ctrys;i++)
+ {
+@@ -2436,12 +2436,12 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s\t%s", msg_h_hits,msg_h_files,msg_h_xfer);
++ fprintf(out_fp,"%s\t%s\t%s", _("Hits"),_("Files"),_("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp,"\t%s\t%s", msg_h_ixfer,msg_h_oxfer);
++ fprintf(out_fp,"\t%s\t%s", _("kB In"),_("kB Out"));
+ }
+- fprintf(out_fp,"\t%s\t%s\n", msg_h_visits,msg_h_hname);
++ fprintf(out_fp,"\t%s\t%s\n", _("Visits"),_("Hostname"));
+ }
+
+ /* dump 'em */
+@@ -2488,12 +2488,12 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s",msg_h_hits,msg_h_xfer);
++ fprintf(out_fp,"%s\t%s",_("Hits"),_("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp,"\t%s\t%s",msg_h_ixfer,msg_h_oxfer);
++ fprintf(out_fp,"\t%s\t%s",_("kB In"),_("kB Out"));
+ }
+- fprintf(out_fp,"\t%s\n",msg_h_url);
++ fprintf(out_fp,"\t%s\n",_("URL"));
+ }
+
+ /* dump 'em */
+@@ -2537,7 +2537,7 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_ref);
++ fprintf(out_fp,"%s\t%s\n",_("Hits"),_("Referrer"));
+ }
+
+ /* dump 'em */
+@@ -2576,7 +2576,7 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_agent);
++ fprintf(out_fp,"%s\t%s\n",_("Hits"),_("User Agent"));
+ }
+
+ /* dump 'em */
+@@ -2615,12 +2615,12 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s\t%s",msg_h_hits,msg_h_files,msg_h_xfer);
++ fprintf(out_fp,"%s\t%s\t%s",_("Hits"),_("Files"),_("kB F"));
+ if (dump_inout != 0)
+ {
+- fprintf(out_fp,"\t%s\t%s",msg_h_ixfer,msg_h_oxfer);
++ fprintf(out_fp,"\t%s\t%s",_("kB In"),_("kB Out"));
+ }
+- fprintf(out_fp,"\t%s\t%s\n",msg_h_visits,msg_h_uname);
++ fprintf(out_fp,"\t%s\t%s\n",_("Visits"),_("Username"));
+ }
+
+ /* dump 'em */
+@@ -2665,7 +2665,7 @@
+ /* need a header? */
+ if (dump_header)
+ {
+- fprintf(out_fp,"%s\t%s\n",msg_h_hits,msg_h_search);
++ fprintf(out_fp,"%s\t%s\n",_("Hits"),_("Search String"));
+ }
+
+ /* dump 'em */
+@@ -2707,9 +2707,9 @@
+ double gt_oxfer=0.0;
+ double gt_visits=0.0;
+
+- if (verbose>1) printf("%s\n",msg_gen_sum);
++ if (verbose>1) printf("%s\n",_("Generating summary report"));
+
+- snprintf(buffer,sizeof(buffer),"%s %s",msg_main_us,hname);
++ snprintf(buffer,sizeof(buffer),"%s %s",_("Usage summary for"),hname);
+ year_graph6x("usage.png", buffer, hist);
+
+ /* now do html stuff... */
+@@ -2727,7 +2727,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,".htaccess");
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),".htaccess");
+ return NULL;
+ }
+ }
+@@ -2749,7 +2749,7 @@
+ if ( (out_fp=open_out_file(index_fname)) == NULL)
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s!\n",msg_no_open,index_fname);
++ fprintf(stderr,"%s %s!\n",_("Error: Unable to open file"),index_fname);
+ return 1;
+ }
+ write_html_head(NULL, out_fp);
+@@ -2761,41 +2761,41 @@
+ fprintf(out_fp,"<TABLE WIDTH=600 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n");
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH COLSPAN=%d BGCOLOR=\"%s\" ALIGN=center>",(dump_inout==0)?11:13,GREY);
+- fprintf(out_fp,"%s</TH></TR>\n",msg_main_sum);
++ fprintf(out_fp,"%s</TH></TR>\n",_("Summary by Month"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH ALIGN=left ROWSPAN=2 BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,msg_h_mth);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,_("Month"));
+ fprintf(out_fp,"<TH ALIGN=center COLSPAN=4 BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,msg_main_da);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,_("Daily Avg"));
+ fprintf(out_fp,"<TH ALIGN=center COLSPAN=%d BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",(dump_inout==0)?6:8,GREY,msg_main_mt);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",(dump_inout==0)?6:8,GREY,_("Monthly Totals"));
+ fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,msg_h_hits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,_("Files"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",PAGECOLOR,msg_h_pages);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",PAGECOLOR,_("Pages"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,_("Visits"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",SITECOLOR,msg_h_sites);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",SITECOLOR,_("Sites"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,msg_h_xfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",KBYTECOLOR,_("kB F"));
+ if (dump_inout != 0)
+ {
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,msg_h_ixfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",IKBYTECOLOR,_("kB In"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,msg_h_oxfer);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",OKBYTECOLOR,_("kB Out"));
+ }
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,msg_h_visits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",VISITCOLOR,_("Visits"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",PAGECOLOR,msg_h_pages);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",PAGECOLOR,_("Pages"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,msg_h_files);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",FILECOLOR,_("Files"));
+ fprintf(out_fp,"<TH ALIGN=center BGCOLOR=\"%s\">" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",HITCOLOR,msg_h_hits);
++ "<FONT SIZE=\"-1\">%s</FONT></TH></TR>\n",HITCOLOR,_("Hits"));
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ for (i=HISTSIZE-1;i>=HISTSIZE-index_mths;i--)
+ {
+@@ -2923,7 +2923,7 @@
+ }
+ fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n");
+ fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=6 ALIGN=left>" \
+- "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,msg_h_totals);
++ "<FONT SIZE=\"-1\">%s</FONT></TH>\n",GREY,_("Totals"));
+ fprintf(out_fp,"<TH BGCOLOR=\"%s\" ALIGN=right>" \
+ "<FONT SIZE=\"-1\">%.0f</FONT></TH>\n",GREY,gt_xfer);
+ if (dump_inout != 0)
+@@ -3258,7 +3258,7 @@
+ if ( S_ISLNK(out_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,filename);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),filename);
+ return NULL;
+ }
+ }
+@@ -3267,7 +3267,7 @@
+ if ( (out_fp=fopen(filename,"w")) == NULL)
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s!\n",msg_no_open,filename);
++ fprintf(stderr,"%s %s!\n",_("Error: Unable to open file"),filename);
+ return NULL;
+ }
+ return out_fp;
+Index: webalizer/parser.c
+===================================================================
+--- webalizer.orig/parser.c 2011-01-08 20:59:30.000000000 +0100
++++ webalizer/parser.c 2011-01-08 20:59:58.000000000 +0100
+@@ -229,7 +229,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_host);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized hostname"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -261,7 +261,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_user);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized username"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -283,7 +283,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_date);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized date field"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -308,7 +308,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_req);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized request field"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -352,7 +352,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_ref);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized referrer field"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -423,7 +423,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_host);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized hostname"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -460,7 +460,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_req);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized request field"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+@@ -489,7 +489,7 @@
+ {
+ if (verbose)
+ {
+- fprintf(stderr,"%s",msg_big_req);
++ fprintf(stderr,"%s",_("Warning: Truncating oversized request field"));
+ if (debug_mode) fprintf(stderr,": %s\n",cpx);
+ else fprintf(stderr,"\n");
+ }
+Index: webalizer/preserve.c
+===================================================================
+--- webalizer.orig/preserve.c 2011-01-08 20:59:30.000000000 +0100
++++ webalizer/preserve.c 2011-01-08 20:59:58.000000000 +0100
+@@ -75,7 +75,7 @@
+
+ if (hist_fp)
+ {
+- if (verbose>1) printf("%s %s\n",msg_get_hist,hist_fname);
++ if (verbose>1) printf("%s %s\n",_("Reading history file..."),hist_fname);
+ while ( fgets(buffer,BUFSIZE,hist_fp) != NULL )
+ {
+ if (buffer[0]=='#') { continue; } /* skip comments */
+@@ -86,7 +86,7 @@
+ /* check if valid numbers */
+ if ( (in_m<1 || in_m>12 || in_y<1970) )
+ {
+- if (verbose) fprintf(stderr,"%s (mth=%d)\n",msg_bad_hist,in_m);
++ if (verbose) fprintf(stderr,"%s (mth=%d)\n",_("Error: Ignoring invalid history record"),in_m);
+ continue;
+ }
+
+@@ -139,7 +139,7 @@
+ }
+ fclose(hist_fp);
+ }
+- else if (verbose>1) printf("%s\n",msg_no_hist);
++ else if (verbose>1) printf("%s\n",_("History file not found..."));
+ }
+
+ /*********************************************/
+@@ -166,7 +166,7 @@
+ if ( S_ISLNK(hist_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,new_fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),new_fname);
+ return;
+ }
+ }
+@@ -179,7 +179,7 @@
+ hist_fp = fopen(new_fname,"w");
+ if (hist_fp)
+ {
+- if (verbose>1) printf("%s\n",msg_put_hist);
++ if (verbose>1) printf("%s\n",_("Saving history information..."));
+
+ /* write header */
+ fprintf(hist_fp,"# Webalizer V%s-%s History Data - %s (%d month)\n",
+@@ -219,7 +219,7 @@
+ }
+ else
+ if (verbose)
+- fprintf(stderr,"%s %s\n",msg_hist_err,new_fname);
++ fprintf(stderr,"%s %s\n",_("Error: Unable to write history file"),new_fname);
+ }
+
+ /*********************************************/
+@@ -338,7 +338,7 @@
+ if ( S_ISLNK(state_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_no_open,new_fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Unable to open file"),new_fname);
+ return(EBADF);
+ }
+ }
+@@ -352,7 +352,7 @@
+ {
+ sprintf(buffer,"%02d/%02d/%04d %02d:%02d:%02d",
+ cur_month,cur_day,cur_year,cur_hour,cur_min,cur_sec);
+- printf("%s [%s]\n",msg_put_data,buffer);
++ printf("%s [%s]\n",_("Saving current run data..."),buffer);
+ }
+
+ /* first, save the easy stuff */
+@@ -566,12 +566,12 @@
+ if (fp==NULL)
+ {
+ /* Previous run data not found... */
+- if (verbose>1) printf("%s\n",msg_no_data);
++ if (verbose>1) printf("%s\n",_("Previous run data not found..."));
+ return 0; /* return with ok code */
+ }
+
+ /* Reading previous run data... */
+- if (verbose>1) printf("%s %s\n",msg_get_data,state_fname);
++ if (verbose>1) printf("%s %s\n",_("Reading previous run data.."),state_fname);
+
+ /* get easy stuff */
+ sprintf(tmp_buf,"# Webalizer V%s ",version);
+@@ -678,7 +678,7 @@
+ {
+ if (verbose)
+ /* Error adding URL node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_u, t_unode.string);
++ fprintf(stderr,"%s %s\n", _("Error adding URL node, skipping"), t_unode.string);
+ }
+ }
+
+@@ -719,7 +719,7 @@
+ t_hnode.visit+1,t_hnode.tstamp,t_hnode.lasturl,sm_htab))
+ {
+ /* Error adding host node (monthly), skipping .... */
+- if (verbose) fprintf(stderr,"%s %s\n",msg_nomem_mh, t_hnode.string);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error adding host node (monthly), skipping"), t_hnode.string);
+ }
+ }
+
+@@ -760,7 +760,7 @@
+ t_hnode.visit+1,t_hnode.tstamp,t_hnode.lasturl,sd_htab))
+ {
+ /* Error adding host node (daily), skipping .... */
+- if (verbose) fprintf(stderr,"%s %s\n",msg_nomem_dh, t_hnode.string);
++ if (verbose) fprintf(stderr,"%s %s\n",_("Error adding host node (daily), skipping"), t_hnode.string);
+ }
+ }
+
+@@ -785,7 +785,7 @@
+ if (put_rnode(tmp_buf,t_rnode.flag,
+ t_rnode.count, &ul_bogus, rm_htab))
+ {
+- if (verbose) fprintf(stderr,"%s %s\n", msg_nomem_r, log_rec.refer);
++ if (verbose) fprintf(stderr,"%s %s\n", _("Error adding Referrer node, skipping"), log_rec.refer);
+ }
+ }
+
+@@ -810,7 +810,7 @@
+ if (put_anode(tmp_buf,t_anode.flag,t_anode.count,
+ &ul_bogus,am_htab))
+ {
+- if (verbose) fprintf(stderr,"%s %s\n", msg_nomem_a, log_rec.agent);
++ if (verbose) fprintf(stderr,"%s %s\n", _("Error adding User Agent node, skipping"), log_rec.agent);
+ }
+ }
+
+@@ -834,7 +834,7 @@
+ /* insert node */
+ if (put_snode(tmp_buf,t_snode.count,sr_htab))
+ {
+- if (verbose) fprintf(stderr,"%s %s\n", msg_nomem_sc, t_snode.string);
++ if (verbose) fprintf(stderr,"%s %s\n", _("Error adding Search String Node, skipping"), t_snode.string);
+ }
+ }
+
+@@ -867,7 +867,7 @@
+ {
+ if (verbose)
+ /* Error adding username node, skipping .... */
+- fprintf(stderr,"%s %s\n",msg_nomem_i, t_inode.string);
++ fprintf(stderr,"%s %s\n",_("Error adding Username node, skipping"), t_inode.string);
+ }
+ }
+
+Index: webalizer/webalizer.c
+===================================================================
+--- webalizer.orig/webalizer.c 2011-01-08 20:59:53.000000000 +0100
++++ webalizer/webalizer.c 2011-01-08 20:59:58.000000000 +0100
+@@ -326,7 +326,7 @@
+ setlocale(LC_CTYPE,"");
+
+ /* Initialise report_title with the default localized value */
+- report_title = msg_title;
++ report_title = _("Usage Statistics for");
+
+ /* initalize epoch */
+ epoch=jdate(1,1,1970); /* used for timestamp adj. */
+@@ -497,7 +497,7 @@
+ #ifndef USE_DNS
+ if (strstr(argv[0],"webazolver")!=0)
+ /* DNS support not present, aborting... */
+- { printf("%s\n",msg_dns_abrt); exit(1); }
++ { printf("%s\n",_("DNS support not present, aborting...")); exit(1); }
+ #else
+ /* Force sane values for cache TTL */
+ if (cache_ttl<1) cache_ttl=1;
+@@ -514,7 +514,7 @@
+ if ( S_ISLNK(log_stat.st_mode) )
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s (symlink)\n",msg_log_err,log_fname);
++ fprintf(stderr,"%s %s (symlink)\n",_("Error: Can't open log file"),log_fname);
+ exit(EBADF);
+ }
+ }
+@@ -531,7 +531,7 @@
+ if (zlog_fp==Z_NULL)
+ {
+ /* Error: Can't open log file ... */
+- fprintf(stderr, "%s %s (%d)\n",msg_log_err,log_fname,ENOENT);
++ fprintf(stderr, "%s %s (%d)\n",_("Error: Can't open log file"),log_fname,ENOENT);
+ exit(ENOENT);
+ }
+ }
+@@ -542,7 +542,7 @@
+ if (log_fp==NULL)
+ {
+ /* Error: Can't open log file ... */
+- fprintf(stderr, "%s %s\n",msg_log_err,log_fname);
++ fprintf(stderr, "%s %s\n",_("Error: Can't open log file"),log_fname);
+ exit(1);
+ }
+ }
+@@ -551,7 +551,7 @@
+ /* Using logfile ... */
+ if (verbose>1)
+ {
+- printf("%s %s (",msg_log_use,log_fname?log_fname:"STDIN");
++ printf("%s %s (",_("Using logfile"),log_fname?log_fname:"STDIN");
+ if (gz_log==COMP_GZIP) printf("gzip-");
+ #ifdef USE_BZIP
+ if (gz_log==COMP_BZIP) printf("bzip-");
+@@ -572,7 +572,7 @@
+ if (chdir(out_dir) != 0)
+ {
+ /* Error: Can't change directory to ... */
+- fprintf(stderr, "%s %s\n",msg_dir_err,out_dir);
++ fprintf(stderr, "%s %s\n",_("Error: Can't change directory to"),out_dir);
+ exit(1);
+ }
+ }
+@@ -584,7 +584,7 @@
+ if (!dns_cache)
+ {
+ /* No cache file specified, aborting... */
+- fprintf(stderr,"%s\n",msg_dns_nocf); /* Must have a cache file */
++ fprintf(stderr,"%s\n",_("No cache file specified, aborting...")); /* Must have a cache file */
+ exit(1);
+ }
+ }
+@@ -593,7 +593,7 @@
+ {
+ if (dns_children > MAXCHILD) dns_children=MAXCHILD;
+ /* DNS Lookup (#children): */
+- if (verbose>1) printf("%s (%d): ",msg_dns_rslv,dns_children);
++ if (verbose>1) printf("%s (%d): ",_("DNS Lookup"),dns_children);
+ fflush(stdout);
+ (gz_log)?dns_resolver(zlog_fp):dns_resolver(log_fp);
+ #ifdef USE_BZIP
+@@ -611,7 +611,7 @@
+ else
+ {
+ /* Using DNS cache file <filaneme> */
+- if (verbose>1) printf("%s %s\n",msg_dns_usec,dns_cache);
++ if (verbose>1) printf("%s %s\n",_("Using DNS cache file"),dns_cache);
+ }
+ }
+
+@@ -621,13 +621,13 @@
+ geo_db=geodb_open(geodb_fname);
+ if (geo_db==NULL)
+ {
+- if (verbose) printf("%s: %s\n",msg_geo_open,
+- (geodb_fname)?geodb_fname:msg_geo_dflt);
+- if (verbose) printf("GeoDB %s\n",msg_geo_nolu);
++ if (verbose) printf("%s: %s\n",_("Error opening file"),
++ (geodb_fname)?geodb_fname:_("default"));
++ if (verbose) printf("GeoDB %s\n",_("lookups disabled"));
+ geodb=0;
+ }
+ else if (verbose>1) printf("%s %s\n",
+- msg_geo_use,geodb_ver(geo_db,buffer));
++ _("Using"),geodb_ver(geo_db,buffer));
+ #ifdef USE_GEOIP
+ if (geoip) geoip=0; /* Disable GeoIP if using GeoDB */
+ #endif
+@@ -647,18 +647,18 @@
+ if (geo_fp==NULL)
+ {
+ /* couldn't open.. warn user */
+- if (verbose) printf("GeoIP %s\n",msg_geo_nolu);
++ if (verbose) printf("GeoIP %s\n",_("lookups disabled"));
+ geoip=0;
+ }
+- else if (verbose>1) printf("%s %s (%s)\n",msg_geo_use,
++ else if (verbose>1) printf("%s %s (%s)\n",_("Using"),
+ GeoIPDBDescription[(int)geo_fp->databaseType],
+- (geoip_db==NULL)?msg_geo_dflt:geo_fp->file_path);
++ (geoip_db==NULL)?_("default"):geo_fp->file_path);
+ }
+ #endif /* USE_GEOIP */
+
+ /* Creating output in ... */
+ if (verbose>1)
+- printf("%s %s\n",msg_dir_use,out_dir?out_dir:msg_cur_dir);
++ printf("%s %s\n",_("Creating output in"),out_dir?out_dir:_("current directory"));
+
+ /* prep hostname */
+ if (!hname)
+@@ -668,10 +668,10 @@
+ }
+
+ /* Hostname for reports is ... */
+- if (strlen(hname)) if (verbose>1) printf("%s '%s'\n",msg_hostname,hname);
++ if (strlen(hname)) if (verbose>1) printf("%s '%s'\n",_("Hostname for reports is"),hname);
+
+ /* get past history */
+- if (ignore_hist) { if (verbose>1) printf("%s\n",msg_ign_hist); }
++ if (ignore_hist) { if (verbose>1) printf("%s\n",_("Ignoring previous history...")); }
+ else get_history();
+
+ if (incremental) /* incremental processing? */
+@@ -679,8 +679,8 @@
+ if ((i=restore_state())) /* restore internal data structs */
+ {
+ /* Error: Unable to restore run data (error num) */
+- /* if (verbose) fprintf(stderr,"%s (%d)\n",msg_bad_data,i); */
+- fprintf(stderr,"%s (%d)\n",msg_bad_data,i);
++ /* if (verbose) fprintf(stderr,"%s (%d)\n",_("Error: Unable to restore run data"),i); */
++ fprintf(stderr,"%s (%d)\n",_("Error: Unable to restore run data"),i);
+ exit(1);
+ }
+ }
+@@ -689,7 +689,7 @@
+ if (ntop_ctrys != 0)
+ { if ( (top_ctrys=calloc(ntop_ctrys,sizeof(CLISTPTR))) == NULL)
+ /* Can't get memory, Top Countries disabled! */
+- {if (verbose) fprintf(stderr,"%s\n",msg_nomem_tc); ntop_ctrys=0;}}
++ {if (verbose) fprintf(stderr,"%s\n",_("Can't allocate enough memory, Top Countries disabled!")); ntop_ctrys=0;}}
+
+ /* get processing start time */
+ start_time = time(NULL);
+@@ -706,7 +706,7 @@
+ {
+ if (verbose>1)
+ {
+- fprintf(stderr,"%s",msg_big_rec);
++ fprintf(stderr,"%s",_("Error: Skipping oversized log record"));
+ if (debug_mode) fprintf(stderr,":\n%s",buffer);
+ else fprintf(stderr,"\n");
+ }
+@@ -766,7 +766,7 @@
+ if (verbose)
+ {
+ fprintf(stderr,"%s: %s [%llu]",
+- msg_bad_date,log_rec.datetime,total_rec);
++ _("Error: Skipping record (bad date)"),log_rec.datetime,total_rec);
+ if (debug_mode) fprintf(stderr,":\n%s\n",tmp_buf);
+ else fprintf(stderr,"\n");
+ }
+@@ -997,7 +997,7 @@
+ if (strlen(log_rec.refer)>=MAXREFH)
+ {
+ if (verbose) fprintf(stderr,"%s [%llu]\n",
+- msg_big_ref,total_rec);
++ _("Warning: Truncating oversized referrer field"),total_rec);
+ log_rec.refer[MAXREFH-1]='\0';
+ }
+
+@@ -1005,7 +1005,7 @@
+ if (strlen(log_rec.url)>=MAXURLH)
+ {
+ if (verbose) fprintf(stderr,"%s [%llu]\n",
+- msg_big_req,total_rec);
++ _("Warning: Truncating oversized request field"),total_rec);
+ log_rec.url[MAXURLH-1]='\0';
+ }
+
+@@ -1227,7 +1227,7 @@
+ {
+ if (verbose)
+ /* Error adding URL node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_u, log_rec.url);
++ fprintf(stderr,"%s %s\n", _("Error adding URL node, skipping"), log_rec.url);
+ }
+
+ /* ident (username) hash table */
+@@ -1238,7 +1238,7 @@
+ {
+ if (verbose)
+ /* Error adding ident node, skipping .... */
+- fprintf(stderr,"%s %s\n", msg_nomem_i, log_rec.ident);
++ fprintf(stderr,"%s %s\n", _("Error adding Username node, skipping"), log_rec.ident);
+ }
+ }
+
+@@ -1249,7 +1249,7 @@
+ if (put_rnode(log_rec.refer,OBJ_REG,(u_int64_t)1,&t_ref,rm_htab))
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s\n", msg_nomem_r, log_rec.refer);
++ fprintf(stderr,"%s %s\n", _("Error adding Referrer node, skipping"), log_rec.refer);
+ }
+ }
+
+@@ -1261,7 +1261,7 @@
+ {
+ if (verbose)
+ /* Error adding host node (daily), skipping .... */
+- fprintf(stderr,"%s %s\n",msg_nomem_dh, log_rec.hostname);
++ fprintf(stderr,"%s %s\n",_("Error adding host node (daily), skipping"), log_rec.hostname);
+ }
+
+ /* hostname (site) hash table - monthly */
+@@ -1272,7 +1272,7 @@
+ {
+ if (verbose)
+ /* Error adding host node (monthly), skipping .... */
+- fprintf(stderr,"%s %s\n", msg_nomem_mh, log_rec.hostname);
++ fprintf(stderr,"%s %s\n", _("Error adding host node (monthly), skipping"), log_rec.hostname);
+ }
+
+ /* user agent hash table */
+@@ -1282,7 +1282,7 @@
+ if (put_anode(log_rec.agent,OBJ_REG,(u_int64_t)1,&t_agent,am_htab))
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s\n", msg_nomem_a, log_rec.agent);
++ fprintf(stderr,"%s %s\n", _("Error adding User Agent node, skipping"), log_rec.agent);
+ }
+ }
+
+@@ -1332,7 +1332,7 @@
+ {
+ if (verbose)
+ /* Error adding URL node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_u, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding URL node, skipping"), cp1);
+ }
+ }
+
+@@ -1347,7 +1347,7 @@
+ {
+ if (verbose)
+ /* Error adding Site node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding host node (monthly), skipping"), cp1);
+ }
+ }
+ else
+@@ -1365,7 +1365,7 @@
+ {
+ if (verbose)
+ /* Error adding Site node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_mh, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding host node (monthly), skipping"), cp1);
+ }
+ }
+ }
+@@ -1378,7 +1378,7 @@
+ {
+ if (verbose)
+ /* Error adding Referrer node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_r, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding Referrer node, skipping"), cp1);
+ }
+ }
+
+@@ -1389,7 +1389,7 @@
+ {
+ if (verbose)
+ /* Error adding User Agent node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_a, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding User Agent node, skipping"), cp1);
+ }
+ }
+
+@@ -1404,7 +1404,7 @@
+ {
+ if (verbose)
+ /* Error adding Username node, skipping ... */
+- fprintf(stderr,"%s %s\n", msg_nomem_i, cp1);
++ fprintf(stderr,"%s %s\n", _("Error adding Username node, skipping"), cp1);
+ }
+ }
+ }
+@@ -1419,7 +1419,7 @@
+ if ( (total_rec==1) && (strncmp(buffer,"format=",7)==0) )
+ {
+ /* Skipping Netscape header record */
+- if (verbose>1) printf("%s\n",msg_ign_nscp);
++ if (verbose>1) printf("%s\n",_("Skipping Netscape header record"));
+ /* count it as ignored... */
+ total_ignore++;
+ }
+@@ -1436,7 +1436,7 @@
+ total_bad++;
+ if (verbose)
+ {
+- fprintf(stderr,"%s (%llu)",msg_bad_rec,total_rec);
++ fprintf(stderr,"%s (%llu)",_("Skipping bad record"),total_rec);
+ if (debug_mode) fprintf(stderr,":\n%s\n",tmp_buf);
+ else fprintf(stderr,"\n");
+ }
+@@ -1486,7 +1486,7 @@
+ if (save_state()) /* incremental stuff */
+ {
+ /* Error: Unable to save current run data */
+- if (verbose) fprintf(stderr,"%s\n",msg_data_err);
++ if (verbose) fprintf(stderr,"%s\n",_("Error: Unable to save current run data"));
+ unlink(state_fname);
+ }
+ }
+@@ -1503,19 +1503,19 @@
+ /* display end of processing statistics */
+ if (time_me || (verbose>1))
+ {
+- printf("%llu %s ",total_rec, msg_records);
++ printf("%llu %s ",total_rec, _("records"));
+ if (total_ignore)
+ {
+- printf("(%llu %s",total_ignore,msg_ignored);
+- if (total_bad) printf(", %llu %s) ",total_bad,msg_bad);
++ printf("(%llu %s",total_ignore,_("ignored"));
++ if (total_bad) printf(", %llu %s) ",total_bad,_("bad"));
+ else printf(") ");
+ }
+- else if (total_bad) printf("(%llu %s) ",total_bad,msg_bad);
++ else if (total_bad) printf("(%llu %s) ",total_bad,_("bad"));
+
+ /* totoal processing time in seconds */
+ temp_time = difftime(end_time, start_time);
+ if (temp_time==0) temp_time=1;
+- printf("%s %.0f %s", msg_in, temp_time, msg_seconds);
++ printf("%s %.0f %s", _("in"), temp_time, _("seconds"));
+
+ /* calculate records per second */
+ if (temp_time)
+@@ -1544,7 +1544,7 @@
+ else
+ {
+ /* No valid records found... exit with error (1) */
+- if (verbose) printf("%s\n",msg_no_vrec);
++ if (verbose) printf("%s\n",_("No valid records found!"));
+ if (hist[0].month!=0) write_main_index(); /* write main HTML file */
+ exit(1);
+ }
+@@ -1697,7 +1697,7 @@
+ if ( (fp=fopen(fname,"r")) == NULL)
+ {
+ if (verbose)
+- fprintf(stderr,"%s %s\n",msg_bad_conf,fname);
++ fprintf(stderr,"%s %s\n",_("Error: Unable to open configuration file"),fname);
+ return;
+ }
+
+@@ -1727,7 +1727,7 @@
+ if (!ouricmp(keyword,kwords[i])) { key=i; break; }
+
+ if (key==0) { printf("%s '%s' (%s)\n", /* Invalid keyword */
+- msg_bad_key,keyword,fname);
++ _("Warning: Invalid keyword"),keyword,fname);
+ continue;
+ }
+
+@@ -1853,7 +1853,7 @@
+ case 85: dns_children=atoi(value); break; /* DNSChildren */
+ #else
+ case 84: /* Disable DNSCache and DNSChildren if DNS is not enabled */
+- case 85: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break;
++ case 85: printf("%s '%s' (%s)\n",_("Warning: Invalid keyword"),keyword,fname); break;
+ #endif /* USE_DNS */
+ case 86: daily_graph=
+ (tolower(value[0])=='n')?0:1; break; /* HourlyGraph */
+@@ -1884,7 +1884,7 @@
+ case 101: /* Disable CacheIPs/CacheTTL/GeoDB/GeoDBDatabase if none */
+ case 102:
+ case 103:
+- case 104: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break;
++ case 104: printf("%s '%s' (%s)\n",_("Warning: Invalid keyword"),keyword,fname); break;
+ #endif /* USE_DNS */
+ case 105: stripcgi=
+ (tolower(value[0])=='n')?0:1; break; /* StripCGI */
+@@ -1902,7 +1902,7 @@
+ case 112: geoip_db=save_opt(value); break; /* GeoIPDatabase */
+ #else
+ case 111: /* Disable GeoIP and GeoIPDatabase if not enabled */
+- case 112: printf("%s '%s' (%s)\n",msg_bad_key,keyword,fname); break;
++ case 112: printf("%s '%s' (%s)\n",_("Warning: Invalid keyword"),keyword,fname); break;
+ #endif
+ case 113: normalize=
+ (tolower(value[0])=='n')?0:1; break; /* NormalizeURL */
+@@ -1995,7 +1995,7 @@
+ {
+ int i;
+
+- printf("%s: %s %s\n",h_usage1,pname,h_usage2);
++ printf("%s: %s %s\n",_("Usage"),pname,_("[options] [log file]"));
+ for (i=0;h_msg[i];i++) printf("%s\n",_(h_msg[i]));
+ exit(1);
+ }
+@@ -2246,7 +2246,7 @@
+ {
+ if (verbose)
+ /* Error adding search string node, skipping .... */
+- fprintf(stderr,"%s %s\n", msg_nomem_sc, tmpbuf);
++ fprintf(stderr,"%s %s\n", _("Error adding Search String Node, skipping"), tmpbuf);
+ }
+ return;
+ }