#include "include/conf.h"
#include "include/defs.h"
+#include "include/readlog.h"
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
-#define REPORT_EVERY_X_LINES 5000
-#define MAX_OPEN_USER_FILES 10
+//! The log file filtering.
+struct ReadLogDataStruct ReadFilter;
-struct userfilestruct
-{
- struct userfilestruct *next;
- struct userinfostruct *user;
- FILE *file;
-};
-
-/*@null@*/static char *userfile=NULL;
-
-numlist weekdays = { { 0, 1, 2, 3, 4, 5, 6 }, 7 };
-numlist hours = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }, 24 };
+//! The list of the system users.
+/*@null@*/char *userfile=NULL;
static void getusers(const char *pwdfile, int debug);
int main(int argc,char *argv[])
{
- enum isa_col_id {
- ISACOL_Ip,
- ISACOL_UserName,
- ISACOL_Date,
- ISACOL_Time,
- ISACOL_TimeTaken,
- ISACOL_Bytes,
- ISACOL_Uri,
- ISACOL_Status,
- ISACOL_Last //last entry of the list !
- };
- enum InputLogFormat {
- ILF_Unknown,
- ILF_Squid,
- ILF_Common,
- ILF_Sarg,
- ILF_Isa,
- ILF_Last //last entry of the list !
- };
-
- FILE *fp_in = NULL, *fp_denied=NULL, *fp_authfail=NULL, *fp_log=NULL;
-
- char sz_Download_Unsort[ 20000 ] ;
- FILE * fp_Download_Unsort = NULL ;
-
extern int optind;
extern int optopt;
extern char *optarg;
- char data[255];
- char elap[255];
- char ip[MAXLEN];
- char tam[255];
- char fun[MAXLEN];
- char wuser[MAXLEN];
- char smartfilter[MAXLEN];
- char dia[128];
- char mes[30];
- char hora[30];
- char date[255];
- char arq[255];
- char arq_log[255];
- int hm, hmf, hmr;
char hm_str[15];
char uagent[MAXLEN];
char hexclude[MAXLEN];
- char csort[MAXLEN];
- int cstatus;
- char tbuf2[128];
- char *str;
- char tmp3[MAXLEN];
- char denied_unsort[MAXLEN];
- char denied_sort[MAXLEN];
- char authfail_unsort[MAXLEN];
- char start_hour[128];
- char *linebuf;
- const char *url;
- char *full_url;
- char user[MAX_USER_LEN];
char splitprefix[MAXLEN];
- enum InputLogFormat ilf;
- int ilf_count[ILF_Last];
int ch;
int x;
int errflg=0;
- int puser=0;
- bool fhost=false;
bool dns=false;
- bool fuser=false;
- int idata=0;
- int mindate=0;
- int maxdate=0;
int iarq=0;
- int isa_ncols=0,isa_cols[ISACOL_Last];
int lastlog=-1;
- long int nbytes;
- long int elap_time;
- bool from_stdin;
- bool from_pipe;
- int blen;
- int maxopenfiles;
- int nopen;
- bool id_is_ip;
- long totregsl=0;
- long totregsg=0;
- long totregsx=0;
- bool totper=false;
- long int max_elapsed=0;
- long long int iyear, imonth, iday;
+ int LogStatus;
bool realt;
bool userip;
- struct tm tt;
- struct tm *t;
- unsigned long recs1=0UL;
- unsigned long recs2=0UL;
- int OutputNonZero = REPORT_EVERY_X_LINES ;
- bool download_flag=false;
- char download_url[MAXLEN];
- struct getwordstruct gwarea;
- longline line;
- time_t tnum;
- struct stat logstat;
- struct userinfostruct *uinfo;
- struct userfilestruct *first_user_file, *ufile, *ufile1, *prev_ufile;
static int split=0;
static int convert=0;
static int output_css=0;
ExternalCSSFile[0]='\0';
RedirectorLogFormat[0]='\0';
NRedirectorLogs=0;
- for (ilf=0 ; ilf<ILF_Last ; ilf++) ilf_count[ilf]=0;
snprintf(ExcludeCodes,sizeof(ExcludeCodes),"%s/exclude_codes",SYSCONFDIR);
strcpy(GraphDaysBytesBarColor,"orange");
strcpy(LDAPTargetAttr, "cn");
SortTableJs[0]='\0';
- dia[0]='\0';
- mes[0]='\0';
- hora[0]='\0';
tmp[0]='\0';
- tmp3[0]='\0';
us[0]='\0';
- date[0]='\0';
+ ReadFilter.DateRange[0]='\0';
df[0]='\0';
uagent[0]='\0';
hexclude[0]='\0';
addr[0]='\0';
- hm=-1;
- hmf=-1;
+ ReadFilter.StartTime=-1;
+ ReadFilter.EndTime=-1;
site[0]='\0';
outdir[0]='\0';
splitprefix[0]='\0';
- elap[0]='\0';
email[0]='\0';
UserInvalidChar[0]='\0';
DataFile[0]='\0';
SquidGuardConf[0]='\0';
DansGuardianConf[0]='\0';
- start_hour[0]='\0';
hm_str[0]='\0';
HostAliasFile[0]='\0';
- denied_count=0;
download_count=0;
- authfail_count=0;
dansguardian_count=0;
redirector_count=0;
useragent_count=0;
bzero(IncludeUsers, sizeof(IncludeUsers));
bzero(ExcludeString, sizeof(ExcludeString));
- first_user_file=NULL;
memset(&period,0,sizeof(period));
NAccessLog=0;
safe_strcpy(hexclude,optarg,sizeof(hexclude));
break;
case 'd':
- safe_strcpy(date,optarg,sizeof(date));
- date_from(date, &dfrom, &duntil);
+ safe_strcpy(ReadFilter.DateRange,optarg,sizeof(ReadFilter.DateRange));
+ date_from(ReadFilter.DateRange, &dfrom, &duntil);
break;
case 'e':
safe_strcpy(email,optarg,sizeof(email));
if(strstr(optarg,"-") == 0) {
if(sscanf(optarg,"%d:%d",&h1,&m1)!=2) {
- debuga(_("Time period passed on the command line with option -t must be MM:SS\n"));
+ debuga(_("Time period passed on the command line with option -t must be HH:MM\n"));
exit(EXIT_FAILURE);
}
- hm=h1*100+m1;
- hmf=hm;
+ ReadFilter.StartTime=h1*100+m1;
+ ReadFilter.EndTime=ReadFilter.StartTime;
snprintf(hm_str,sizeof(hm_str),"%02d:%02d",h1,m1);
} else {
if(sscanf(optarg,"%d:%d-%d:%d",&h1,&m1,&h2,&m2)!=4) {
- debuga(_("Time range passed on the command line with option -t must be MM:SS-MM:SS\n"));
+ debuga(_("Time range passed on the command line with option -t must be HH:MM-HH:MM\n"));
exit(EXIT_FAILURE);
}
- hm=h1*100+m1;
- hmf=h2*100+m2;
+ ReadFilter.StartTime=h1*100+m1;
+ ReadFilter.EndTime=h2*100+m2;
snprintf(hm_str,sizeof(hm_str),"%02d:%02d-%02d:%02d",h1,m1,h2,m2);
}
break;
if(access(PasswdFile, R_OK) == 0) {
getusers(PasswdFile,debug);
- puser++;
+ ReadFilter.SysUsers=true;
+ } else {
+ ReadFilter.SysUsers=false;
}
if(hexclude[0] == '\0')
strcpy(hexclude,ExcludeHosts);
if(hexclude[0] != '\0') {
gethexclude(hexclude,debug);
- fhost=true;
+ ReadFilter.HostFilter=true;
+ } else {
+ ReadFilter.HostFilter=false;
}
if(ReportType == 0) {
if(access(ExcludeUsers, R_OK) == 0) {
getuexclude(ExcludeUsers,debug);
- fuser=true;
+ ReadFilter.UserFilter=true;
+ } else {
+ ReadFilter.UserFilter=false;
}
if (HostAliasFile[0] != '\0')
read_hostalias(HostAliasFile);
indexonly=false;
- if(fuser) {
+ if(ReadFilter.UserFilter) {
if(is_indexonly())
indexonly=true;
}
if(strcmp(ExcludeUsers,"indexonly") == 0) indexonly=true;
if(Index == INDEX_ONLY) indexonly=true;
- if(MaxElapsed[0] != '\0') max_elapsed=atol(MaxElapsed);
+ if(MaxElapsed[0] != '\0')
+ ReadFilter.max_elapsed=atol(MaxElapsed);
+ else
+ ReadFilter.max_elapsed=0;
if(uagent[0] == '\0') strcpy(uagent,UserAgentLog);
emptytmpdir(tmp);
}
my_mkdir(tmp);
- snprintf(denied_unsort,sizeof(denied_unsort),"%s/denied.int_unsort",tmp);
- snprintf(denied_sort,sizeof(denied_sort),"%s/denied.int_log",tmp);
- snprintf(authfail_unsort,sizeof(authfail_unsort),"%s/authfail.int_unsort",tmp);
if(debug) {
debuga(_("Parameters:\n"));
debuga(_(" Hostname or IP address (-a) = %s\n"),addr);
debuga(_(" Useragent log (-b) = %s\n"),uagent);
debuga(_(" Exclude file (-c) = %s\n"),hexclude);
- debuga(_(" Date from-until (-d) = %s\n"),date);
+ debuga(_(" Date from-until (-d) = %s\n"),ReadFilter.DateRange);
debuga(_(" Email address to send reports (-e) = %s\n"),email);
debuga(_(" Config file (-f) = %s\n"),ConfigFile);
if(strcmp(df,"e") == 0)
printf(_(" Hostname or IP address (-a) = %s\n"),addr);
printf(_(" Useragent log (-b) = %s\n"),uagent);
printf(_(" Exclude file (-c) = %s\n"),hexclude);
- printf(_(" Date from-until (-d) = %s\n"),date);
+ printf(_(" Date from-until (-d) = %s\n"),ReadFilter.DateRange);
printf(_(" Email address to send reports (-e) = %s\n"),email);
printf(_(" Config file (-f) = %s\n"),ConfigFile);
if(strcmp(df,"e") == 0)
debuga(_("Sarg compiled to report warnings if the output is inconsistent\n"));
#endif
- maxopenfiles=MAX_OPEN_USER_FILES;
#ifdef HAVE_RLIM_T
if (Ulimit[0] != '\0') {
struct rlimit rl;
init_usertab(UserTabFile);
- if ((line=longline_create())==NULL) {
- debuga(_("Not enough memory to read a log file\n"));
- exit(EXIT_FAILURE);
- }
-
- snprintf(sz_Download_Unsort,sizeof(sz_Download_Unsort),"%s/download.int_unsort", tmp);
-
- if(DataFile[0]=='\0') {
- if((ReportType & REPORT_TYPE_DENIED) != 0) {
- if((fp_denied=MY_FOPEN(denied_unsort,"w"))==NULL) {
- debuga(_("(log) Cannot open file: %s - %s\n"),denied_unsort,strerror(errno));
- exit(EXIT_FAILURE);
- }
- }
-
- if((ReportType & REPORT_TYPE_DENIED) != 0 || (ReportType & REPORT_TYPE_AUTH_FAILURES) != 0) {
- if((fp_authfail=MY_FOPEN(authfail_unsort,"w"))==NULL) {
- debuga(_("(log) Cannot open file: %s - %s\n"),authfail_unsort,strerror(errno));
- exit(EXIT_FAILURE);
- }
- }
- }
-
- for (iarq=0 ; iarq<NAccessLog ; iarq++) {
- strcpy(arq,AccessLog[iarq]);
-
- strcpy(arqtt,arq);
-
- if(strcmp(arq,"-")==0) {
- if(debug)
- debuga(_("Reading access log file: from stdin\n"));
- fp_in=stdin;
- from_stdin=true;
- } else {
- if (date[0]!='\0') {
- if (stat(arq,&logstat)!=0) {
- debuga(_("Cannot get the modification time of input log file %s (%s). Processing it anyway\n"),arq,strerror(errno));
- } else {
- struct tm *logtime=localtime(&logstat.st_mtime);
- if ((logtime->tm_year+1900)*10000+(logtime->tm_mon+1)*100+logtime->tm_mday<dfrom) {
- debuga(_("Ignoring old log file %s\n"),arq);
- continue;
- }
- }
- }
- fp_in=decomp(arq,&from_pipe);
- if(fp_in==NULL) {
- debuga(_("(log) Cannot open log file: %s - %s\n"),arq,strerror(errno));
- exit(EXIT_FAILURE);
- }
- if(debug) debuga(_("Reading access log file: %s\n"),arq);
- from_stdin=false;
- }
- ilf=ILF_Unknown;
- download_flag=false;
- // pre-read the file only if we have to show stats
- if(ShowReadStatistics && !from_stdin && !from_pipe) {
- size_t nread,i;
- bool skipcr=false;
- char tmp4[MAXLEN];
-
- recs1=0UL;
- recs2=0UL;
-
- while ((nread=fread(tmp4,1,sizeof(tmp4),fp_in))>0) {
- for (i=0 ; i<nread ; i++)
- if (skipcr) {
- if (tmp4[i]!='\n' && tmp4[i]!='\r') {
- skipcr=false;
- }
- } else {
- if (tmp4[i]=='\n' || tmp4[i]=='\r') {
- skipcr=true;
- recs1++;
- }
- }
- }
- rewind(fp_in);
- printf(_("SARG: Records in file: %lu, reading: %3.2f%%"),recs1,(float) 0);
- putchar('\r');
- fflush( stdout ) ;
- }
-
- longline_reset(line);
-
- while ((linebuf=longline_read(fp_in,line))!=NULL) {
- blen=strlen(linebuf);
-
- if (ilf==ILF_Unknown) {
- if(strncmp(linebuf,"#Software: Mic",14) == 0) {
- fixendofline(linebuf);
- if (debug)
- debuga(_("Log is from Microsoft ISA: %s\n"),linebuf);
- ilf=ILF_Isa;
- ilf_count[ilf]++;
- continue;
- }
-
- if(strncmp(linebuf,"*** SARG Log ***",16) == 0) {
- if (getperiod_fromsarglog(arqtt,&period)<0) {
- debuga(_("The name of the file is invalid: %s\n"),arq);
- exit(EXIT_FAILURE);
- }
- ilf=ILF_Sarg;
- ilf_count[ilf]++;
- continue;
- }
- }
-
- if(!fp_log && ParsedOutputLog[0] && ilf!=ILF_Sarg) {
- if(access(ParsedOutputLog,R_OK) != 0) {
- my_mkdir(ParsedOutputLog);
- }
- if (snprintf(arq_log,sizeof(arq_log),"%s/sarg_temp.log",ParsedOutputLog)>=sizeof(arq_log)) {
- debuga(_("File name too long: %s/sarg_temp.log\n"),ParsedOutputLog);
- exit(EXIT_FAILURE);
- }
- if((fp_log=MY_FOPEN(arq_log,"w"))==NULL) {
- debuga(_("(log) Cannot open log file: %s - %s\n"),arq_log,strerror(errno));
- exit(EXIT_FAILURE);
- }
- fputs("*** SARG Log ***\n",fp_log);
- }
-
- recs2++;
- if( ShowReadStatistics && !from_stdin && !from_pipe && --OutputNonZero<=0) {
- double perc = recs2 * 100. / recs1 ;
- printf(_("SARG: Records in file: %lu, reading: %3.2lf%%"),recs2,perc);
- putchar('\r');
- fflush (stdout);
- OutputNonZero = REPORT_EVERY_X_LINES ;
- }
- if(blen < 58) continue;
- if(strstr(linebuf,"HTTP/0.0") != 0) continue;
- if(strstr(linebuf,"logfile turned over") != 0) continue;
- if(linebuf[0] == ' ') continue;
-
- // exclude_string
- if(ExcludeString[0] != '\0') {
- bool exstring=false;
- getword_start(&gwarea,ExcludeString);
- while(strchr(gwarea.current,':') != 0) {
- if (getword_multisep(val1,sizeof(val1),&gwarea,':')<0) {
- debuga(_("Maybe you have a broken record or garbage in your exclusion string\n"));
- exit(EXIT_FAILURE);
- }
- if((str=(char *) strstr(linebuf,val1)) != (char *) NULL ) {
- exstring=true;
- break;
- }
- }
- if(!exstring && (str=(char *) strstr(linebuf,gwarea.current)) != (char *) NULL )
- exstring=true;
- if(exstring) continue;
- }
-
- totregsl++;
- if(debugm)
- printf("BUF=%s\n",linebuf);
-
- t=NULL;
- if (ilf==ILF_Squid || ilf==ILF_Common || ilf==ILF_Unknown) {
- getword_start(&gwarea,linebuf);
- if (getword(data,sizeof(data),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken time in your access.log file\n"));
- exit(EXIT_FAILURE);
- }
- if((str=(char *) strchr(data, '.')) != (char *) NULL && (str=(char *) strchr(str+1, '.')) != (char *) NULL ) {
- strcpy(ip,data);
- strcpy(elap,"0");
- if(squid24) {
- if (getword(user,sizeof(user),&gwarea,' ')<0 || getword_skip(255,&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- } else {
- if (getword_skip(255,&gwarea,' ')<0 || getword(user,sizeof(user),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- }
- if (getword(data,sizeof(data),&gwarea,']')<0 || getword_skip(MAXLEN,&gwarea,'"')<0 ||
- getword(fun,sizeof(fun),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_ptr(linebuf,&full_url,&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken url in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_skip(MAXLEN,&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(code2,sizeof(code2),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(tam,sizeof(tam),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if((str=(char *) strchr(gwarea.current, ' ')) != (char *) NULL ) {
- if (getword(code,sizeof(code),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- } else {
- if (getword(code,sizeof(code),&gwarea,'\0')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- }
-
- if ((str = strchr(code, ':')) != NULL)
- *str = '/';
-
- if(strcmp(tam,"\0") == 0)
- strcpy(tam,"0");
-
- ilf=ILF_Common;
- ilf_count[ilf]++;
-
- getword_start(&gwarea,data+1);
- if (getword_multisep(data,sizeof(data),&gwarea,':')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_multisep(hora,sizeof(hora),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- getword_start(&gwarea,data);
- if (getword_atoll(&iday,&gwarea,'/')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(mes,sizeof(mes),&gwarea,'/')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_atoll(&iyear,&gwarea,'/')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
-
- imonth=month2num(mes)+1;
- idata=builddia(iday,imonth,iyear);
- computedate(iyear,imonth,iday,&tt);
- if (sscanf(hora,"%d:%d:%d",&tt.tm_hour,&tt.tm_min,&tt.tm_sec)!=3 || tt.tm_hour<0 || tt.tm_hour>=24 ||
- tt.tm_min<0 || tt.tm_min>=60 || tt.tm_sec<0 || tt.tm_sec>=60) {
- debuga(_("Invalid time found in %s\n"),arq);
- exit(EXIT_FAILURE);
- }
- t=&tt;
- }
-
- if(ilf==ILF_Unknown || ilf==ILF_Squid) {
- if (getword(elap,sizeof(elap),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken elapsed time in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- while(strcmp(elap,"") == 0 && gwarea.current[0] != '\0')
- if (getword(elap,sizeof(elap),&gwarea,' ')<0) {
- debuga(_("Maybe you have a broken elapsed time in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if(strlen(elap) < 1) continue;
- if (getword(ip,sizeof(ip),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken client IP address in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(code,sizeof(code),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken result code in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(tam,sizeof(tam),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken amount of data in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(fun,sizeof(fun),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken request method in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_ptr(linebuf,&full_url,&gwarea,' ')<0){
- debuga(_("Maybe you have a broken url in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(user,sizeof(user),&gwarea,' ')<0){
- debuga(_("Maybe you have a broken user ID in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- ilf=ILF_Squid;
- ilf_count[ilf]++;
-
- tnum=atoi(data);
- t=localtime(&tnum);
- if (t == NULL) {
- debuga(_("Cannot convert the timestamp from the squid log file\n"));
- exit(EXIT_FAILURE);
- }
-
- strftime(tbuf2, sizeof(tbuf2), "%H%M", t);
-
- idata=(t->tm_year+1900)*10000+(t->tm_mon+1)*100+t->tm_mday;
- }
- }
- if (ilf==ILF_Sarg) {
- getword_start(&gwarea,linebuf);
- if (getword(data,sizeof(data),&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(hora,sizeof(hora),&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(user,sizeof(user),&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(ip,sizeof(ip),&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_ptr(linebuf,&full_url,&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(tam,sizeof(tam),&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(code,sizeof(code),&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(elap,sizeof(elap),&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword(smartfilter,sizeof(smartfilter),&gwarea,'\0')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- getword_start(&gwarea,data);
- if (getword_atoll(&iday,&gwarea,'/')<0 || iday<1 || iday>31){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_atoll(&imonth,&gwarea,'/')<0 || imonth<1 || imonth>12){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_atoll(&iyear,&gwarea,'\0')<0){
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- idata=builddia(iday,imonth,iyear);
- computedate(iyear,imonth,iday,&tt);
- if (sscanf(hora,"%d:%d:%d",&tt.tm_hour,&tt.tm_min,&tt.tm_sec)!=3 || tt.tm_hour<0 || tt.tm_hour>=24 ||
- tt.tm_min<0 || tt.tm_min>=60 || tt.tm_sec<0 || tt.tm_sec>=60) {
- debuga(_("Invalid time found in %s\n"),arq);
- exit(EXIT_FAILURE);
- }
- t=&tt;
- }
- if (ilf==ILF_Isa) {
- if (linebuf[0] == '#') {
- int ncols,cols[ISACOL_Last];
-
- fixendofline(linebuf);
- getword_start(&gwarea,linebuf);
- // remove the #Fields: column at the beginning of the line
- if (getword_skip(1000,&gwarea,' ')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- for (ncols=0 ; ncols<ISACOL_Last ; ncols++) cols[ncols]=-1;
- ncols=0;
- while(gwarea.current[0] != '\0') {
- if (getword(val1,sizeof(val1),&gwarea,'\t')<0){
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if(strcmp(val1,"c-ip") == 0) cols[ISACOL_Ip]=ncols;
- if(strcmp(val1,"cs-username") == 0) cols[ISACOL_UserName]=ncols;
- if(strcmp(val1,"date") == 0) cols[ISACOL_Date]=ncols;
- if(strcmp(val1,"time") == 0) cols[ISACOL_Time]=ncols;
- if(strcmp(val1,"time-taken") == 0) cols[ISACOL_TimeTaken]=ncols;
- if(strcmp(val1,"sc-bytes") == 0) cols[ISACOL_Bytes]=ncols;
- if(strcmp(val1,"cs-uri") == 0) cols[ISACOL_Uri]=ncols;
- if(strcmp(val1,"sc-status") == 0) cols[ISACOL_Status]=ncols;
- ncols++;
- }
- if (cols[ISACOL_Ip]>=0) {
- isa_ncols=ncols;
- for (ncols=0 ; ncols<ISACOL_Last ; ncols++)
- isa_cols[ncols]=cols[ncols];
- }
- continue;
- }
- if (!isa_ncols) continue;
- getword_start(&gwarea,linebuf);
- for (x=0 ; x<isa_ncols ; x++) {
- if (getword_ptr(linebuf,&str,&gwarea,'\t')<0) {
- debuga(_("Maybe you have a broken record or garbage in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (x==isa_cols[ISACOL_Ip]) {
- if (strlen(str)>=sizeof(ip)) {
- debuga(_("Maybe you have a broken IP in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(ip,str);
- } else if (x==isa_cols[ISACOL_UserName]) {
- if (strlen(str)>=sizeof(user)) {
- debuga(_("Maybe you have a broken user ID in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(user,str);
- } else if (x==isa_cols[ISACOL_Date]) {
- if (strlen(str)>=sizeof(data)) {
- debuga(_("Maybe you have a broken date in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(data,str);
- } else if (x==isa_cols[ISACOL_Time]) {
- if (strlen(str)>=sizeof(hora)) {
- debuga(_("Maybe you have a broken time in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(hora,str);
- } else if (x==isa_cols[ISACOL_TimeTaken]) {
- if (strlen(str)>=sizeof(elap)) {
- debuga(_("Maybe you have a broken download duration in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(elap,str);
- } else if (x==isa_cols[ISACOL_Bytes]) {
- if (strlen(str)>=sizeof(tam)) {
- debuga(_("Maybe you have a broken download size in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(tam,str);
- } else if (x==isa_cols[ISACOL_Uri]) {
- full_url=str;
- } else if (x==isa_cols[ISACOL_Status]) {
- if (strlen(str)>=sizeof(code)) {
- debuga(_("Maybe you have a broken access code in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- strcpy(code,str);
- }
- }
-
- if(strcmp(code,"401") == 0 || strcmp(code,"403") == 0 || strcmp(code,"407") == 0) {
- sprintf(val1,"DENIED/%s",code);
- strcpy(code,val1);
- }
- getword_start(&gwarea,data);
- if (getword_atoll(&iyear,&gwarea,'-')<0){
- debuga(_("Maybe you have a broken year in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_atoll(&imonth,&gwarea,'-')<0){
- debuga(_("Maybe you have a broken month in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
- if (getword_atoll(&iday,&gwarea,'\0')<0){
- debuga(_("Maybe you have a broken day in your %s file\n"),arq);
- exit(EXIT_FAILURE);
- }
-
- idata=builddia(iday,imonth,iyear);
- computedate(iyear,imonth,iday,&tt);
- if (isa_cols[ISACOL_Time]>=0) {
- if (sscanf(hora,"%d:%d:%d",&tt.tm_hour,&tt.tm_min,&tt.tm_sec)!=3 || tt.tm_hour<0 || tt.tm_hour>=24 ||
- tt.tm_min<0 || tt.tm_min>=60 || tt.tm_sec<0 || tt.tm_sec>=60) {
- debuga(_("Invalid time found in %s\n"),arq);
- exit(EXIT_FAILURE);
- }
- }
- t=&tt;
- }
- if (t==NULL) {
- debuga(_("Unknown input log file format\n"));
- break;
- }
-
- strftime(dia, sizeof(dia), "%d/%m/%Y", t);
- snprintf(hora,sizeof(hora),"%02d:%02d:%02d",t->tm_hour,t->tm_min,t->tm_sec);
-
- if(debugm)
- printf("DATE=%s IDATA=%d DFROM=%d DUNTIL=%d\n",date,idata,dfrom,duntil);
-
- if(date[0] != '\0'){
- if(idata < dfrom || idata > duntil) continue;
- }
-
- // Record only hours usage which is required
- if (t) {
- if( bsearch( &( t -> tm_wday ), weekdays.list, weekdays.len, sizeof( int ), compar ) == NULL )
- continue;
-
- if( bsearch( &( t -> tm_hour ), hours.list, hours.len, sizeof( int ), compar ) == NULL )
- continue;
- }
-
-
- if(strlen(user) > MAX_USER_LEN) {
- if (debugm) printf(_("User ID too long: %s\n"),user);
- totregsx++;
- continue;
- }
-
- // include_users
- if(IncludeUsers[0] != '\0') {
- snprintf(val1,sizeof(val1),":%s:",user);
- if((str=(char *) strstr(IncludeUsers,val1)) == (char *) NULL )
- continue;
- }
-
- if(vercode(code)) {
- if (debugm) printf(_("Excluded code: %s\n"),code);
- totregsx++;
- continue;
- }
-
- if(testvaliduserchar(user))
- continue;
-
-#if 0
- if((str = strstr(user,"%20")) != NULL) {
- /*
- This is a patch introduced to solve bug #1624251 reported at sourceforge but
- the side effect is to truncate the name at the first space and merge the reports
- of people whose name is identical up to the first space.
-
- The old code used to truncate the user name at the first % if a %20 was
- found anywhere in the string. That means the string could be truncated
- at the wrong place if another % occured before the %20. This new code should
- avoid that problem and only truncate at the space. There is no bug
- report indicating that anybody noticed this.
- */
- *str='\0';
- }
-
- /*
- Code prior to 2.2.7 used to replace any %xx by a dot as long as a %5c was
- found in the user name.
- */
- while((str = strstr(user,"%5c")) != NULL) {
- *str='.';
- for (x=3 ; str[x] ; x++) str[x-2]=str[x];
- }
-#endif
- // replace any tab by a single space
- for (str=full_url ; *str ; str++)
- if (*str=='\t') *str=' ';
- for (str=code ; *str ; str++)
- if (*str=='\t') *str=' ';
-
- if(ilf!=ILF_Sarg) {
- /*
- The full URL is not saved in sarg log. There is no point in testing the URL to detect
- a downloaded file.
- */
- download_flag=is_download_suffix(full_url);
- if (download_flag) {
- safe_strcpy(download_url,full_url,sizeof(download_url));
- download_count++;
- }
- } else
- download_flag=false;
-
- url=process_url(full_url,LongUrl);
- if (!url || url[0] == '\0') continue;
-
- if(addr[0] != '\0'){
- if(strcmp(addr,ip)!=0) continue;
- }
- if(fhost) {
- if(!vhexclude(url)) {
- if (debugm) printf(_("Excluded site: %s\n"),url);
- totregsx++;
- continue;
- }
- }
-
- if(hm >= 0 && hmf >= 0) {
- hmr=t->tm_hour*100+t->tm_min;
- if(hmr < hm || hmr > hmf) continue;
- }
-
- if(site[0] != '\0'){
- if(strstr(url,site)==0) continue;
- }
-
- if(UserIp) {
- strcpy(user,ip);
- id_is_ip=true;
- } else {
- id_is_ip=false;
- if(strcmp(user,"-") == 0 || strcmp(user," ") == 0 || strcmp(user,"") == 0) {
- if(RecordsWithoutUser == RECORDWITHOUTUSER_IP) {
- strcpy(user,ip);
- id_is_ip=true;
- }
- if(RecordsWithoutUser == RECORDWITHOUTUSER_IGNORE)
- continue;
- if(RecordsWithoutUser == RECORDWITHOUTUSER_EVERYBODY)
- strcpy(user,"everybody");
- } else {
- strlow(user);
- if(NtlmUserFormat == NTLMUSERFORMAT_USER) {
- if ((str=strchr(user,'+'))!=NULL || (str=strchr(user,'\\'))!=NULL || (str=strchr(user,'_'))!=NULL) {
- strcpy(warea,str+1);
- strcpy(user,warea);
- }
- }
- }
- }
-
- if(us[0] != '\0'){
- if(strcmp(user,us)!=0) continue;
- }
-
- if(puser) {
- snprintf(wuser,sizeof(wuser),":%s:",user);
- if(strstr(userfile, wuser) == 0)
- continue;
- }
-
- if(fuser) {
- if(!vuexclude(user)) {
- if (debugm) printf(_("Excluded user: %s\n"),user);
- totregsx++;
- continue;
- }
- }
-
- if(strcmp(user,"-") ==0 || strcmp(user," ") ==0 || strcmp(user,"") ==0 || strcmp(user,":") ==0)
- continue;
-
- nbytes=atol(tam);
- if (nbytes<0) nbytes=0;
-
- elap_time=atol(elap);
- if (elap_time<0) elap_time=0;
- if(max_elapsed) {
- if(elap_time>max_elapsed) {
- elap_time=0;
- }
- }
-
- if((str=(char *) strstr(linebuf, "[SmartFilter:")) != (char *) NULL ) {
- fixendofline(str);
- snprintf(smartfilter,sizeof(smartfilter),"\"%s\"",str+1);
- } else strcpy(smartfilter,"\"\"");
-
- nopen=0;
- prev_ufile=NULL;
- for (ufile=first_user_file ; ufile && strcmp(user,ufile->user->id)!=0 ; ufile=ufile->next) {
- prev_ufile=ufile;
- if (ufile->file) nopen++;
- }
- if (!ufile) {
- ufile=malloc(sizeof(*ufile));
- if (!ufile) {
- debuga(_("Not enough memory to store the user %s\n"),user);
- exit(EXIT_FAILURE);
- }
- memset(ufile,0,sizeof(*ufile));
- ufile->next=first_user_file;
- first_user_file=ufile;
- uinfo=userinfo_create(user);
- ufile->user=uinfo;
- uinfo->id_is_ip=id_is_ip;
- } else {
- if (prev_ufile) {
- prev_ufile->next=ufile->next;
- ufile->next=first_user_file;
- first_user_file=ufile;
- }
- }
-#ifdef ENABLE_DOUBLE_CHECK_DATA
- ufile->user->nbytes+=nbytes;
- ufile->user->elap+=elap_time;
-#endif
-
- if (ufile->file==NULL) {
- if (nopen>=maxopenfiles) {
- x=0;
- for (ufile1=first_user_file ; ufile1 ; ufile1=ufile1->next) {
- if (ufile1->file!=NULL) {
- if (x>=maxopenfiles) {
- if (fclose(ufile1->file)==EOF) {
- debuga(_("Failed to close the log file of user %s - %s\n"),ufile1->user->id,strerror(errno));
- exit(EXIT_FAILURE);
- }
- ufile1->file=NULL;
- }
- x++;
- }
- }
- }
- if (snprintf (tmp3, sizeof(tmp3), "%s/%s.user_unsort", tmp, ufile->user->filename)>=sizeof(tmp3)) {
- debuga(_("Temporary user file name too long: %s/%s.user_unsort\n"), tmp, ufile->user->filename);
- exit(EXIT_FAILURE);
- }
- if ((ufile->file = MY_FOPEN (tmp3, "a")) == NULL) {
- debuga(_("(log) Cannot open temporary file: %s - %s\n"), tmp3, strerror(errno));
- exit (1);
- }
- }
-
- if (fprintf(ufile->file, "%s\t%s\t%s\t%s\t%ld\t%s\t%ld\t%s\n",dia,hora,ip,url,nbytes,code,elap_time,smartfilter)<=0) {
- debuga(_("Write error in the log file of user %s\n"),user);
- exit(EXIT_FAILURE);
- }
-
- if(fp_log && ilf!=ILF_Sarg)
- fprintf(fp_log, "%s\t%s\t%s\t%s\t%s\t%ld\t%s\t%ld\t%s\n",dia,hora,user,ip,url,nbytes,code,elap_time,smartfilter);
-
- totregsg++;
-
- if(!dataonly && download_flag && strstr(code,"DENIED") == 0) {
- ndownload = 1;
-
- if ( ! fp_Download_Unsort ) {
- if ((fp_Download_Unsort = MY_FOPEN ( sz_Download_Unsort, "a")) == NULL) {
- debuga(_("(log) Cannot open temporary file: %s - %s\n"),sz_Download_Unsort, strerror(errno));
- exit (1);
- }
- }
- fprintf(fp_Download_Unsort,"%s\t%s\t%s\t%s\t%s\n",dia,hora,user,ip,download_url);
- }
-
- if((ReportType & REPORT_TYPE_DENIED) != 0) {
- if(fp_denied && strstr(code,"DENIED/403") != 0) {
- fprintf(fp_denied, "%s\t%s\t%s\t%s\t%s\n",dia,hora,user,ip,full_url);
- denied_count++;
- }
- }
- if((ReportType & REPORT_TYPE_AUTH_FAILURES) != 0) {
- if(fp_authfail && (strstr(code,"DENIED/401") != 0 || strstr(code,"DENIED/407") != 0)) {
- fprintf(fp_authfail, "%s\t%s\t%s\t%s\t%s\n",dia,hora,user,ip,full_url);
- authfail_count++;
- }
- }
-
- if (ilf!=ILF_Sarg) {
- if(!totper || idata<mindate){
- mindate=idata;
- memcpy(&period.start,t,sizeof(*t));
- strcpy(start_hour,tbuf2);
- }
- if (!totper || idata>maxdate) {
- maxdate=idata;
- memcpy(&period.end,t,sizeof(*t));
- }
- totper=true;
- }
-
- if(debugm){
- printf("IP=\t%s\n",ip);
- printf("USER=\t%s\n",user);
- printf("ELAP=\t%ld\n",elap_time);
- printf("DATE=\t%s\n",dia);
- printf("TIME=\t%s\n",hora);
- printf("FUNC=\t%s\n",fun);
- printf("URL=\t%s\n",url);
- printf("CODE=\t%s\n",code);
- printf("LEN=\t%ld\n",nbytes);
- }
- }
- if (!from_stdin) {
- if (from_pipe)
- pclose(fp_in);
- else {
- fclose(fp_in);
- if( ShowReadStatistics )
- printf(_("SARG: Records in file: %lu, reading: %3.2f%%\n"),recs1, (float) 100 );
- }
- }
- }
-
- if (debug)
- debuga(_(" Records read: %ld, written: %ld, excluded: %ld\n"),totregsl,totregsg,totregsx);
-
- longline_destroy(&line);
- if ( fp_Download_Unsort )
- fclose (fp_Download_Unsort);
-
- for (ufile=first_user_file ; ufile ; ufile=ufile1) {
- ufile1=ufile->next;
- if (ufile->file!=NULL) fclose(ufile->file);
- free(ufile);
- }
+ LogStatus=ReadLogFile(&ReadFilter);
free_download();
free_excludecodes();
free_exclude();
- if(debug) {
- int totalcount=0;
-
- for (ilf=0 ; ilf<ILF_Last ; ilf++) totalcount+=ilf_count[ilf];
-
- if(ilf_count[ILF_Common]>0 && ilf_count[ILF_Squid]>0)
- debuga(_("Log with mixed records format (squid and common log)\n"));
-
- if(ilf_count[ILF_Common]>0 && ilf_count[ILF_Squid]==0)
- debuga(_("Common log format\n"));
-
- if(ilf_count[ILF_Common]==0 && ilf_count[ILF_Squid]>0)
- debuga(_("Squid log format\n"));
-
- if(ilf_count[ILF_Sarg]>0)
- debuga(_("Sarg log format\n"));
-
- if(totalcount==0 && totregsg)
- debuga(_("Log with invalid format\n"));
- }
-
- if(!totregsg){
+ if (!LogStatus){
debuga(_("No records found\n"));
debuga(_("End\n"));
- if(fp_denied) fclose(fp_denied);
- if(fp_authfail) fclose(fp_authfail);
userinfo_free();
if(userfile) free(userfile);
close_usertab();
exit(EXIT_SUCCESS);
}
- if (date[0]!='\0') {
+ if (ReadFilter.DateRange[0]!='\0') {
char date0[30], date1[30];
strftime(date0,sizeof(date0),"%d/%m/%Y",&period.start);
exit(EXIT_FAILURE);
}
- if(debugz){
- debugaz(_("date=%s\n"),dia);
- debugaz(_("period=%s\n"),period.text);
- }
-
if(debug)
debuga(_("Period: %s\n"),period.text);
- if(fp_denied)
- fclose(fp_denied);
- if(fp_authfail)
- fclose(fp_authfail);
-
- if(fp_log != NULL) {
- char end_hour[128];
- char val2[40];
- char val4[255];//val4 must not be bigger than arq_log without fixing the strcpy below
-
- fclose(fp_log);
- safe_strcpy(end_hour,tbuf2,sizeof(end_hour));
- strftime(val2,sizeof(val2),"%d%m%Y",&period.start);
- strftime(val1,sizeof(val1),"%d%m%Y",&period.end);
- if (snprintf(val4,sizeof(val4),"%s/sarg-%s_%s-%s_%s.log",ParsedOutputLog,val2,start_hour,val1,end_hour)>=sizeof(val4)) {
- debuga(_("File name too long: %s/sarg-%s_%s-%s_%s.log\n"),ParsedOutputLog,val2,start_hour,val1,end_hour);
- exit(EXIT_FAILURE);
- }
- if (rename(arq_log,val4)) {
- debuga(_("failed to rename %s to %s - %s\n"),arq_log,val4,strerror(errno));
- } else {
- strcpy(arq_log,val4);
-
- if(strcmp(ParsedOutputLogCompress,"nocompress") != 0 && ParsedOutputLogCompress[0] != '\0') {
- /*
- No double quotes around ParsedOutputLogCompress because it may contain command line options. If double quotes are
- necessary around the command name, put them in the configuration file.
- */
- if (snprintf(val1,sizeof(val1),"%s \"%s\"",ParsedOutputLogCompress,arq_log)>=sizeof(val1)) {
- debuga(_("Command too long: %s \"%s\"\n"),ParsedOutputLogCompress,arq_log);
- exit(EXIT_FAILURE);
- }
- cstatus=system(val1);
- if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) {
- debuga(_("command return status %d\n"),WEXITSTATUS(cstatus));
- debuga(_("command: %s\n"),val1);
- exit(EXIT_FAILURE);
- }
- }
- }
- if(debug)
- debuga(_("Sarg parsed log saved as %s\n"),arq_log);
- }
-
- if(DataFile[0] == '\0' && (ReportType & REPORT_TYPE_DENIED) != 0) {
- if (snprintf(csort,sizeof(csort),"sort -T \"%s\" -t \"\t\" -k 3,3 -k 5,5 -o \"%s\" \"%s\"",tmp,denied_sort,denied_unsort)>=sizeof(csort)) {
- debuga(_("Sort command too long when sorting file \"%s\" to \"%s\"\n"),denied_unsort,denied_sort);
- exit(EXIT_FAILURE);
- }
- cstatus=system(csort);
- if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) {
- debuga(_("sort command return status %d\n"),WEXITSTATUS(cstatus));
- debuga(_("sort command: %s\n"),csort);
- exit(EXIT_FAILURE);
- }
- if (!KeepTempLog && unlink(denied_unsort)) {
- debuga(_("Cannot delete \"%s\": %s\n"),denied_unsort,strerror(errno));
- exit(EXIT_FAILURE);
- }
- }
-
if(DataFile[0] != '\0')
data_file(tmp);
else
gerarel();
- if((ReportType & REPORT_TYPE_DENIED) != 0) {
- if (!KeepTempLog && unlink(denied_sort) && errno!=ENOENT)
- debuga(_("Cannot delete \"%s\": %s\n"),denied_sort,strerror(errno));
- }
+ denied_cleanup();
+ authfail_cleanup();
+
if(!KeepTempLog && strcmp(tmp,"/tmp") != 0) {
unlinkdir(tmp,0);
msgstr ""
"Project-Id-Version: sarg 2.3-pre3\n"
"Report-Msgid-Bugs-To: fmarchal@users.sourceforge.net\n"
- "POT-Creation-Date: 2012-07-16 14:07+0200\n"
+ "POT-Creation-Date: 2012-07-19 09:13+0200\n"
"PO-Revision-Date: 2010-06-18 02:09+0800\n"
"Last-Translator: zhixiang.ren <kurt998@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
#: auth.c:42
#, c-format
msgid "File name too long: %s/%s/.htaccess\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s/.htaccess\n"
+msgstr "�ļ�������: %s/%s/.htaccess\n"
#: auth.c:46
#, c-format
msgid "(auth) Cannot open file: %s - %s\n"
-msgstr "(auth) ²»ÄÜ´ò¿ªÎļþ: %s - %s\n"
+msgstr "(auth) ���ܴ����ļ�: %s - %s\n"
#: auth.c:51
#, c-format
msgid "(auth) Cannot open template file: %s - %s\n"
-msgstr "(auth) ²»ÄÜ´ò¿ªÁÙʱÎļþ: %s - %s\n"
+msgstr "(auth) ���ܴ�����ʱ�ļ�: %s - %s\n"
#: authfail.c:34
#, c-format
#: util.c:1845 util.c:1965
#, fuzzy, c-format
msgid "Cannot delete \"%s\": %s\n"
--msgstr " ²»ÄÜɾ³ý %s - %s\n"
++msgstr " ����ɾ�� %s - %s\n"
#: authfail.c:77
msgid "Authentication failures report not produced because it is empty\n"
#: topuser.c:194 useragent.c:141 useragent.c:224 useragent.c:293
#, c-format
msgid "sort command return status %d\n"
-msgstr "ÅÅÐòÃüÁî·µ»Ø״̬ %d\n"
+msgstr "���������״̬ %d\n"
#: authfail.c:88 authfail.c:93 dansguardian_log.c:154 download.c:71
#: email.c:141 html.c:394 lastlog.c:82 log.c:1681 realtime.c:104
#: useragent.c:225 useragent.c:230 useragent.c:294 useragent.c:299
#, c-format
msgid "sort command: %s\n"
-msgstr "ÅÅÐòÃüÁî: %s\n"
+msgstr "��������: %s\n"
#: authfail.c:92 authfail.c:102
#, c-format
msgid "(authfail) Cannot open file %s\n"
-msgstr "(authfail) ²»ÄÜ´ò¿ªÎļþ %s\n"
-
+msgstr "(authfail) ���ܴ����ļ� %s\n"
+
+<<<<<<< HEAD
+#: authfail.c:95 authfail.c:208 dansguardian_log.c:158
+#: dansguardian_report.c:173 download.c:79 download.c:234 email.c:146
+#: email.c:257 grepday.c:728 html.c:455 html.c:459 html.c:490 html.c:495
+#: index.c:47 lastlog.c:87 lastlog.c:95 log.c:1694 realtime.c:108
+#: realtime.c:292 redirector.c:402 redirector.c:579 report.c:335
+#: siteuser.c:184 smartfilter.c:89 sort.c:89 sort.c:139 topsites.c:178
+#: topsites.c:214 topuser.c:205 topuser.c:359 topuser.c:415 useragent.c:152
+#: useragent.c:235 useragent.c:283 useragent.c:304 useragent.c:337
+#, fuzzy, c-format
+msgid "Cannot delete %s - %s\n"
+msgstr " ����ɾ�� %s - %s\n"
+
+#: authfail.c:104 authfail.c:108 topuser.c:241
+=======
#: authfail.c:106 authfail.c:110 topuser.c:241
+>>>>>>> origin/v2.3
msgid "Authentication Failures"
-msgstr "ÈÏ֤ʧ°Ü"
+msgstr "��֤ʧ��"
#: authfail.c:108 dansguardian_report.c:83 denied.c:87 download.c:144
#: grepday.c:559 redirector.c:472 siteuser.c:86 smartfilter.c:107
#: smartfilter.c:175 topsites.c:234 topuser.c:218
#, c-format
msgid "Period: %s"
-msgstr "Çø¼ä: %s"
+msgstr "����: %s"
#: authfail.c:114 dansguardian_report.c:89 denied.c:93 download.c:150
#: email.c:175 realtime.c:314 redirector.c:478 smartfilter.c:116
#: smartfilter.c:183 topuser.c:269 useragent.c:175
msgid "USERID"
-msgstr "Óû§ID"
+msgstr "�û�ID"
#: authfail.c:114 dansguardian_report.c:89 denied.c:93 download.c:150
#: realtime.c:314 redirector.c:478 smartfilter.c:116 smartfilter.c:183
msgid "IP/NAME"
-msgstr "IP/ÐÕÃû"
+msgstr "IP/����"
#: authfail.c:114 dansguardian_report.c:89 denied.c:93 download.c:150
#: realtime.c:314 redirector.c:478 smartfilter.c:116 smartfilter.c:183
msgid "DATE/TIME"
-msgstr "ÈÕÆÚ/ʱ¼ä"
+msgstr "����/ʱ��"
#. TRANSLATORS: This is a column header showing the URL of the visited sites.
#: authfail.c:114 dansguardian_report.c:89 denied.c:93 download.c:150
#: html.c:202 realtime.c:314 redirector.c:478 report.c:267 siteuser.c:95
#: smartfilter.c:116 smartfilter.c:183 topsites.c:250
msgid "ACCESSED SITE"
-msgstr "·ÃÎÊÕ¾µã"
+msgstr "����վ��"
#: authfail.c:117 email.c:81 html.c:128 html.c:350 html.c:411 siteuser.c:110
#: topsites.c:106 topsites.c:264
#, c-format
msgid "Not enough memory to read file %s\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡Îļþ %s\n"
+msgstr "û���㹻���ڴ����ȡ�ļ� %s\n"
#: authfail.c:124
#, c-format
msgid "There is a broken date in file %s\n"
-msgstr "Óв»ÍêÕûµÄÈÕÆÚÔÚÎļþ %s\n"
+msgstr "�в��������������ļ� %s\n"
#: authfail.c:128
#, c-format
msgid "There is a broken time in file %s\n"
-msgstr "Óв»ÍêÕûµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "�в�������ʱ�����ļ��� %s\n"
#: authfail.c:132
#, c-format
msgid "There is a broken user ID in file %s\n"
-msgstr "Óв»ÍêÕûµÄÓû§IDÔÚÎļþÖÐ %s\n"
+msgstr "�в��������û�ID���ļ��� %s\n"
#: authfail.c:136
#, c-format
msgid "There is a broken IP address in file %s\n"
-msgstr "Óв»ÍêÕûµÄIPµØÖ·ÔÚÎļþÖÐ %s\n"
+msgstr "�в�������IP��ַ���ļ��� %s\n"
#: authfail.c:140 denied.c:108 download.c:165 html.c:150 html.c:238
#, c-format
msgid "There is a broken url in file %s\n"
-msgstr "Óв»ÍêÕûµÄÁ¬½ÓÔÚÎļþÖÐ %s\n"
+msgstr "�в�������������ļ��� %s\n"
#: authfail.c:149 denied.c:117 download.c:174 email.c:212 redirector.c:509
#: siteuser.c:119 smartfilter.c:129 topuser.c:332
#, c-format
msgid "Unknown user ID %s in file %s\n"
-msgstr "δ֪µÄÓû§ID %s ÔÚÎļþ %s\n"
+msgstr "δ֪���û�ID %s ���ļ� %s\n"
#: authfail.c:205 dansguardian_report.c:169 denied.c:176 download.c:229
- #: grepday.c:773 html.c:586 redirector.c:575 repday.c:240 siteuser.c:191
+ #: grepday.c:773 html.c:586 redirector.c:575 repday.c:245 siteuser.c:191
#: topsites.c:319 useragent.c:332
#, c-format
msgid "Write error in file %s\n"
-msgstr "ÔÚÎļþÖÐÓÐдÈë´íÎó %s\n"
+msgstr "���ļ�����д������ %s\n"
#: authfail.c:207 convlog.c:80 dansguardian_report.c:171 denied.c:178
- #: download.c:231 grepday.c:775 html.c:588 redirector.c:577 repday.c:242
+ #: download.c:231 grepday.c:775 html.c:588 redirector.c:577 repday.c:247
#: siteuser.c:193 splitlog.c:112 splitlog.c:143 splitlog.c:147 topsites.c:321
#: topuser.c:50 totday.c:181 useragent.c:127 useragent.c:278 useragent.c:334
#, c-format
msgid "Failed to close file %s - %s\n"
-msgstr "¹Ø±ÕÎļþʱʧ°Ü %s - %s\n"
+msgstr "�ر��ļ�ʱʧ�� %s - %s\n"
#: convlog.c:46
#, fuzzy, c-format
msgid "(convlog) Cannot open log file %s - %s\n"
-msgstr "(log) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ: %s - %s\n"
+msgstr "(log) ���ܴ�����־�ļ�: %s - %s\n"
#: convlog.c:51 splitlog.c:87
#, fuzzy, c-format
msgid "Not enough memory to read the log file %s\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡ÈÕÖ¾Îļþ\n"
+msgstr "û���㹻���ڴ����ȡ��־�ļ�\n"
#: convlog.c:58
#, c-format
msgid "Maybe you have a broken record or garbage in file %s\n"
-msgstr "¿ÉÄÜÓв»ÍêÕûµÄ¼Í¼»òÕßÀ¬»ø´æÔÚÎļþ %s\n"
+msgstr "�����в������ļ�¼������������ļ� %s\n"
#: dansguardian_log.c:56
#, c-format
msgid "Cannot open DansGuardian config file: %s\n"
-msgstr "²»ÄÜ´ò¿ª DansGuardian ÅäÖÃÎļþ: %s\n"
+msgstr "���ܴ��� DansGuardian �����ļ�: %s\n"
#: dansguardian_log.c:61 dansguardian_log.c:66 dansguardian_log.c:90
#, c-format
msgid "(dansguardian) Cannot open log file: %s\n"
-msgstr "(dansguardian) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ: %s\n"
+msgstr "(dansguardian) ���ܴ�����־�ļ�: %s\n"
#: dansguardian_log.c:77 dansguardian_log.c:116 dansguardian_log.c:125
#: dansguardian_report.c:95 lastlog.c:114 log.c:943 log.c:948 log.c:954
#: useragent.c:83 useragent.c:106
#, c-format
msgid "Maybe you have a broken record or garbage in your %s file\n"
-msgstr "¿ÉÄÜÓв»ÍêÕûµÄ¼Í¼»òÕßÀ¬»øÔÚÄãµÄ %s ÎļþÖÐ \n"
+msgstr "�����в������ļ�¼������������� %s �ļ��� \n"
#: dansguardian_log.c:80
#, fuzzy, c-format
msgid ""
"Using the dansguardian log file \"%s\" found in your configuration file \"%s"
"\"\n"
-msgstr "ÔÚÅäÖÃÎļþÖдæÔÚ¹ý¶àµÄÈÕÖ¾Îļþ\n"
+msgstr "�������ļ��д��ڹ�������־�ļ�\n"
#: dansguardian_log.c:87
#, c-format
msgid "Reading DansGuardian log file: %s\n"
-msgstr "¶ÁÈ¡ DansGuardian ÈÕÖ¾Îļþ: %s\n"
+msgstr "��ȡ DansGuardian ��־�ļ�: %s\n"
#: dansguardian_log.c:100
#, fuzzy, c-format
msgid "Invalid date found in your dansguardian log file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: dansguardian_log.c:104
#, fuzzy, c-format
msgid "Invalid time found in your dansguardian log file %s\n"
-msgstr "ÎÞЧµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "��Ч��ʱ�����ļ��� %s\n"
#: dansguardian_log.c:108
#, fuzzy, c-format
msgid "Invalid user found in your dansguardian log file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: dansguardian_log.c:112
#, fuzzy, c-format
msgid "Invalid IP address found in your dansguardian log file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: dansguardian_log.c:120 dansguardian_report.c:99 html.c:360 log.c:958
#: log.c:1056
#, c-format
msgid "Maybe you have a broken url in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÁ¬½ÓÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "�������в���������������� %s �ļ���\n"
#: dansguardian_log.c:148 redirector.c:387 sort.c:75 useragent.c:132
#, c-format
msgid "Sorting file: %s\n"
-msgstr "ÕýÔÚÅÅÐòÎļþ: %s\n"
+msgstr "���������ļ�: %s\n"
#: dansguardian_report.c:34
#, c-format
#: dansguardian_report.c:72 dansguardian_report.c:77
#, c-format
msgid "(dansguardian_report) Cannot open log file %s\n"
-msgstr "(dansguardian_report) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(dansguardian_report) ���ܴ�����־�ļ� %s\n"
#: dansguardian_report.c:81 dansguardian_report.c:85 topuser.c:237
msgid "DansGuardian"
#: dansguardian_report.c:89
msgid "CAUSE"
-msgstr "ԭÒò"
+msgstr "ԭ��"
#: dansguardian_report.c:103
#, c-format
msgid "Maybe you have a broken rule in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄ¹æÔòÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "�������в������Ĺ��������� %s �ļ���\n"
#: datafile.c:72 html.c:82 report.c:114
#, fuzzy, c-format
msgid "Cannot enumerate the user list\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢Óû§ %s\n"
+msgstr "û���㹻���ڴ���洢�û� %s\n"
#: datafile.c:83
#, fuzzy, c-format
msgid "Reading user file: %s/%s\n"
-msgstr "Éú³ÉÎļþ: %s/%s\n"
+msgstr "�����ļ�: %s/%s\n"
#: datafile.c:87
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "(datafile) directory path too long: %s/%s.log\n"
+msgstr "(datafile) �ļ���·��̫��: %s/%s\n"
+=======
msgid "(datafile) directory path too long: %s/%s.user_log\n"
--msgstr "(datafile) Îļþ¼Ð·¾¶Ì«³¤: %s/%s\n"
++msgstr "(datafile) �ļ���·��̫��: %s/%s\n"
+>>>>>>> origin/v2.3
#: datafile.c:92 datafile.c:148
#, c-format
msgid "(datafile) Cannot open file %s\n"
-msgstr "(datafile) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(datafile) ���ܴ�����־�ļ� %s\n"
#: datafile.c:97
#, c-format
msgid "Not enough memory to read the downloaded files.\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥¶ÁÈ¡ÒÑÏÂÔØÎļþ. \n"
+msgstr "û���㹻���ڴ�ȥ��ȡ�������ļ�. \n"
#: datafile.c:109 denied.c:104 download.c:161 report.c:166 smartfilter.c:123
#, c-format
msgid "There is a broken record or garbage in file %s\n"
-msgstr "Óв»ÍêÕûµÄ¼Í¼»òÀ¬»øÔÚÎļþ %s\n"
+msgstr "�в������ļ�¼��������ļ� %s\n"
#: datafile.c:113
#, c-format
msgid "There is an invalid smart info in file %s\n"
-msgstr "ÓÐÎÞЧµÄÖÇÄÜÐÅÏ¢ÔÚÎļþ %s\n"
+msgstr "����Ч��������Ϣ���ļ� %s\n"
#: datafile.c:132 datafile.c:177 realtime.c:280 report.c:203 report.c:279
#: report.c:304 siteuser.c:139 topsites.c:120 topsites.c:139
#, c-format
msgid "Not enough memory to store the url\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥´æ´¢Á¬½Ó\n"
+msgstr "û���㹻���ڴ�ȥ�洢���\n"
#: datafile.c:198
#, c-format
msgid "Datafile %s written successfully\n"
-msgstr "Êý¾ÝÎļþ %s дÈë³É¹¦\n"
+msgstr "�����ļ� %s д���ɹ�\n"
#: decomp.c:36
#, c-format
msgid "File not found: %s\n"
-msgstr "δÕÒµ½Îļþ: %s\n"
+msgstr "δ�ҵ��ļ�: %s\n"
#: decomp.c:42 decomp.c:62
#, c-format
msgid "Decompressing log file \"%s\" with zcat\n"
-msgstr "½âѹËõÈÕÖ¾Îļþ \"%s\" ʹÓÃzcat\n"
+msgstr "��ѹ����־�ļ� \"%s\" ʹ��zcat\n"
#: decomp.c:44 decomp.c:54 decomp.c:64
#, c-format
msgid "decompression command too long for log file %s\n"
-msgstr "½âѹÈÕÖ¾ÎļþÃüÁî¹ý³¤ %s\n"
+msgstr "��ѹ��־�ļ��������� %s\n"
#: decomp.c:52
#, c-format
msgid "Decompressing log file \"%s\" with bzcat\n"
-msgstr "½âѹËõÎļþ \"%s\" ʹÓÃbzcat\n"
+msgstr "��ѹ���ļ� \"%s\" ʹ��bzcat\n"
#: denied.c:34
#, c-format
#: denied.c:76 denied.c:81
#, c-format
msgid "(denied) Cannot open log file %s\n"
-msgstr "(denied)²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(denied)���ܴ�����־�ļ� %s\n"
#: denied.c:85 denied.c:89
msgid "Denied"
-msgstr "ÉùÃ÷"
+msgstr "����"
#: denied.c:96
#, c-format
msgid "Not enough memory to read the denied accesses\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡×èÖ¹·ÃÎÊ\n"
+msgstr "û���㹻���ڴ����ȡ��ֹ����\n"
+
+<<<<<<< HEAD
+#: denied.c:180
+#, fuzzy, c-format
+msgid "Failed to delete the file \"%s\" after processing it - %s\n"
+msgstr "ɾ���ļ�ʧ�� %s\n"
+=======
+>>>>>>> origin/v2.3
#: dichotomic.c:161 dichotomic.c:176
#, fuzzy, c-format
msgid "Not enough memory to store the key/value pair %s/%s\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢Óû§ %s\n"
+msgstr "û���㹻���ڴ���洢�û� %s\n"
#: download.c:65
#, c-format
#: download.c:75
#, fuzzy, c-format
msgid "Path too long for %s/download.int_unsort\n"
-msgstr "Óû§Ãû¹ý³¤ %s/%s.unsort\n"
+msgstr "�û������� %s/%s.unsort\n"
#: download.c:114
#, fuzzy
msgid "No downloaded files to report\n"
-msgstr "ÏÂÔغó׺Áбí¹ý³¤\n"
+msgstr "���غ��б�����\n"
#: download.c:125
msgid "Sorted file doesn't exist (to produce the download report)\n"
#: download.c:133 download.c:138
#, c-format
msgid "(download) Cannot open log file %s\n"
-msgstr "(download) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(download) ���ܴ�����־�ļ� %s\n"
#: download.c:142 download.c:146 topuser.c:239
msgid "Downloads"
-msgstr "ÏÂÔØ"
+msgstr "����"
#: download.c:153 report.c:156 topuser.c:293
#, c-format
msgid "Not enough memory to read the downloaded files\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡ÏÂÔØÎļþ\n"
+msgstr "û���㹻���ڴ����ȡ�����ļ�\n"
#: download.c:275
#, c-format
msgid "Download suffix list too long\n"
-msgstr "ÏÂÔغó׺Áбí¹ý³¤\n"
+msgstr "���غ��б�����\n"
#: download.c:283
#, c-format
msgid "Too many download suffixes\n"
-msgstr "¹ý¶àµÄÏÂÔغó\n"
+msgstr "���������غ�\n"
#: email.c:61 email.c:67 email.c:73 email.c:151 email.c:157 email.c:269
#, c-format
msgid "(email) Cannot open file %s\n"
-msgstr "(email)²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(email)���ܴ����ļ� %s\n"
#: email.c:129
#, c-format
#: email.c:161 log.c:364
msgid "Squid User Access Report"
-msgstr "SquidÓû§·ÃÎʱ¨¸æ"
+msgstr "Squid�û����ʱ���"
#: email.c:165
msgid "Decreasing Access (bytes)"
-msgstr "½µµÍ·ÃÎÊ(bytes)"
+msgstr "���ͷ���(bytes)"
#: email.c:169 html.c:182 repday.c:127 report.c:258 useragent.c:167
msgid "Period"
-msgstr "ÆÚ¼ä"
+msgstr "�ڼ�"
#. TRANSLATORS: This is a column header showing the position of the entry in the sorted list.
#: email.c:173 siteuser.c:93 topsites.c:246 topuser.c:260
msgid "NUM"
-msgstr "Êý×Ö"
+msgstr "����"
#. TRANSLATORS: This is a column header showing the number of connections to a visited site.
#: email.c:177 html.c:205 topsites.c:252 topuser.c:272
msgid "CONNECT"
-msgstr "Á¬½Ó"
+msgstr "���"
#. TRANSLATORS: This is a column header showing the number of transfered bytes.
#: email.c:179 grepday.c:752 html.c:207 html.c:209 index.c:432 repday.c:140
#: siteuser.c:97 topsites.c:254 topuser.c:274 topuser.c:276
msgid "BYTES"
-msgstr "×Ö½Ú"
+msgstr "�ֽ�"
#: email.c:181 grepday.c:765 html.c:213 topuser.c:280
msgid "ELAPSED TIME"
-msgstr "ÒÑʹÓÃʱ¼ä"
+msgstr "��ʹ��ʱ��"
#: email.c:183 html.c:215 topuser.c:282
msgid "MILLISEC"
-msgstr "ºÁÃë"
+msgstr "����"
#. TRANSLATORS: This is a column header showing the time spent by the proxy processing the requests.
#: email.c:185 html.c:217 report.c:267 topsites.c:256 topuser.c:284
msgid "TIME"
-msgstr "ʱ¼ä"
+msgstr "ʱ��"
#: email.c:194 useragent.c:197
#, c-format
msgid "There is an invalid user ID in file %s\n"
-msgstr "ÓÐÒ»¸ö²»´æÔÚµÄÓû§IDÔÚÎļþ %s\n"
+msgstr "��һ����ڵ��û�ID���ļ� %s\n"
#: email.c:198
#, c-format
msgid "There is an invalid number of bytes in file %s\n"
-msgstr "Óв»´æÔÚµÄ×Ö½ÚÊýÔÚÎļþ %s\n"
+msgstr "�в����ڵ��ֽ������ļ� %s\n"
#: email.c:202
#, c-format
msgid "There is an invalid number of access in file %s\n"
-msgstr "ÓÐÒ»¸ö²»´æÔڵķÃÎÊÊýÔÚÎļþ %s\n"
+msgstr "��һ����ڵķ��������ļ� %s\n"
#: email.c:206
#, c-format
msgid "There is an invalid elapsed time in file %s\n"
-msgstr "ÓÐÒ»¸öÎÞЧµÄʱ¼äֵ %s\n"
+msgstr "��һ����Ч��ʱ��ֵ %s\n"
- #: email.c:231 email.c:233 html.c:503 repday.c:145 repday.c:169 repday.c:195
- #: repday.c:219 topuser.c:426 useragent.c:311
+ #: email.c:231 email.c:233 html.c:503 repday.c:148 repday.c:172 repday.c:200
+ #: repday.c:224 topuser.c:426 useragent.c:311
msgid "TOTAL"
-msgstr "×Üֵ"
+msgstr "��ֵ"
#: email.c:247 html.c:564 index.c:432 topuser.c:460
msgid "AVERAGE"
-msgstr "ƽ¾ùֵ"
+msgstr "ƽ��ֵ"
#. TRANSLATORS: The string is formatted using strftime. You can use
#. any string formatting marker allowed by strftime.
#: email.c:278
#, fuzzy, c-format
msgid "SARG report, %c"
-msgstr "SARG ±¨¸æ %s"
+msgstr "SARG ���� %s"
#: email.c:281
#, fuzzy, c-format
msgid "Sending mail with command: %s\n"
-msgstr "ÃüÁî: %s\n"
+msgstr "����: %s\n"
#: email.c:284 index.c:582 log.c:1663
#, c-format
msgid "command return status %d\n"
-msgstr "ÃüÁî·µ»Ø״̬ %d\n"
+msgstr "�����״̬ %d\n"
#: email.c:285 index.c:583 log.c:1664
#, c-format
msgid "command: %s\n"
-msgstr "ÃüÁî: %s\n"
+msgstr "����: %s\n"
#: exclude.c:82 exclude.c:110
#, c-format
msgid "Not enough memory to store the exlcluded IP addresses\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢±»ÅųýµÄIPµØַ\n"
+msgstr "û���㹻���ڴ���洢���ų���IP��ַ\n"
#: exclude.c:161 exclude.c:171
#, c-format
msgid "Not enough memory to store the excluded URLs\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢±»ÅųýµÄÁ¬½Ó\n"
+msgstr "û���㹻���ڴ���洢���ų������\n"
#: exclude.c:196
#, c-format
msgid "Cannot open exclude_hosts file: %s - %s\n"
-msgstr "²»ÄÜ´ò¿ªexclude_hostsÎļþ: %s-%s\n"
+msgstr "���ܴ���exclude_hosts�ļ�: %s-%s\n"
#: exclude.c:200
#, c-format
msgid "Loading exclude host file from: %s\n"
-msgstr "ÔØÈë¾Ü¾øÖ÷»úÎļþ´Ó: %s\n"
+msgstr "�����ܾ������ļ���: %s\n"
#: exclude.c:203 exclude.c:317
#, c-format
msgid "(gethexclude) Cannot open file %s - %s\n"
-msgstr "(gethexclude)²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+msgstr "(gethexclude)���ܴ����ļ� %s - %s\n"
#: exclude.c:214 url.c:596
#, c-format
#: exclude.c:314
#, c-format
msgid "Loading exclude file from: %s\n"
-msgstr "ÔØÈëÅųýÎļþ´Ó: %s\n"
+msgstr "�����ų��ļ���: %s\n"
#: exclude.c:322
#, c-format
msgid "Failed to move till the end of the excluded users file %s: %s\n"
-msgstr "ÔÚÅųýÓû§Îļþ֮ǰ²»ÄÜÒƶ¯¸ÃÎļþ %s: %s\n"
+msgstr "���ų��û��ļ�֮ǰ�����ƶ����ļ� %s: %s\n"
#: exclude.c:327 log.c:1739 usertab.c:73 util.c:1414
#, c-format
msgid "Cannot get the size of file %s\n"
-msgstr "²»Äܵõ½ÎļþµÄ´óС %s\n"
+msgstr "���ܵõ��ļ��Ĵ�С %s\n"
#: exclude.c:332
#, c-format
msgid "Failed to rewind the excluded users file %s: %s\n"
-msgstr "תÏòÅųýÓû§Îļþʱʧ°Ü %s: %s\n"
+msgstr "ת���ų��û��ļ�ʱʧ�� %s: %s\n"
#: exclude.c:337
#, c-format
msgid "malloc error (%ld bytes required)\n"
-msgstr "ÄÚ´æÒ²´íÎó (%ld bytes required)\n"
+msgstr "�ڴ�Ҳ���� (%ld bytes required)\n"
#: getconf.c:210
#, c-format
msgid "The string value of parameter \"%s\" is too long\n"
-msgstr "²ÎÊýµÄ×Ö·û´®Öµ\"%s\" Ì«³¤\n"
+msgstr "�������ַ���ֵ\"%s\" ̫��\n"
#: getconf.c:230
#, c-format
msgid "Missing double quote after parameter \"%s\"\n"
-msgstr "ÔÚ²ÎÊýÖ®ºóȱÉÙË«ÒýºÅ\"%s\"\n"
+msgstr "�ڲ���֮��ȱ��˫����\"%s\"\n"
#: getconf.c:242
#, c-format
msgid ""
"Missing double quote after parameter \"%s\" or value is more than %d bytes "
"long\n"
-msgstr "ÔÚ²ÎÊýÖ®ºóȱÉÙË«ÒýºÅ \"%s\" »òÕßÊýÖµ´óÓÚ %d ×Ö½Ú³¤\n"
+msgstr "�ڲ���֮��ȱ��˫���� \"%s\" ������ֵ���� %d �ֽڳ�\n"
#: getconf.c:263
#, c-format
msgid "The first word of parameter \"%s\" is more than %d bytes long\n"
-msgstr "²ÎÊýµÄµÚÒ»¸ö´Ê \"%s\" ´óÓÚ %d ×Ö½Ú³¤\n"
+msgstr "�����ĵ�һ���� \"%s\" ���� %d �ֽڳ�\n"
#: getconf.c:267
#, c-format
msgid "Missing second word for parameter \"%s\"\n"
-msgstr "²ÎÊýȱÉÙµÚ¶þ¸ö´Ê \"%s\"\n"
+msgstr "����ȱ�ٵڶ����� \"%s\"\n"
#: getconf.c:277
#, c-format
msgid "The second word of parameter \"%s\" is more than %d bytes long\n"
-msgstr "µÚ¶þ¸ö²ÎÊý \"%s\" ´óÓÚ %d ×Ö½Ú³¤\n"
+msgstr "�ڶ������� \"%s\" ���� %d �ֽڳ�\n"
#: getconf.c:300
#, c-format
msgid "The integer value of parameter \"%s\" is invalid\n"
-msgstr "ÕûÊýÊýÖµ²ÎÊý \"%s\" ²»´æÔÚ\n"
+msgstr "������ֵ���� \"%s\" ������\n"
#: getconf.c:352
#, c-format
msgid "Unknown value \"%s\" for parameter \"%s\"\n"
-msgstr "²»´æÔÚµÄÊýÖµ \"%s\" ²ÎÊý \"%s\"\n"
+msgstr "�����ڵ���ֵ \"%s\" ���� \"%s\"\n"
#: getconf.c:356
#, c-format
msgid ""
"Value \"%s\" conflicts with other selected values for parameter \"%s\"\n"
-msgstr "ÊýÖµ \"%s\" ³åÍ»ÓëÆäËü±»Ñ¡¶¨µÄ²ÎÊýÊýֵ \"%s\"\n"
+msgstr "��ֵ \"%s\" ��ͻ��������ѡ���IJ�����ֵ \"%s\"\n"
#: getconf.c:387
#, fuzzy, c-format
msgid "Unknown sort criterion \"%s\" for parameter \"%s\"\n"
-msgstr "²»´æÔÚµÄÊýÖµ \"%s\" ²ÎÊý \"%s\"\n"
+msgstr "�����ڵ���ֵ \"%s\" ���� \"%s\"\n"
#: getconf.c:402
#, fuzzy, c-format
msgid "Unknown sort order \"%s\" for parameter \"%s\"\n"
-msgstr "²»´æÔÚµÄÊýÖµ \"%s\" ²ÎÊý \"%s\"\n"
+msgstr "�����ڵ���ֵ \"%s\" ���� \"%s\"\n"
#: getconf.c:422
#, c-format
#, c-format
msgid ""
"Maybe you have a broken record or garbage in \"date_format\" parameter\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄ¼Í¼»òÀ¬»øÔÚ \"date_format\" ²ÎÊýÖÐ\n"
+msgstr "�������в������ļ�¼������� \"date_format\" ������\n"
#: getconf.c:481
#, c-format
msgid "Error: Invalid syntax in hours tag!\n"
-msgstr "´íÎó: ²»´æÔڵľ䷨ÔÚСʱ±êÇ©ÖÐ!\n"
+msgstr "����: �����ڵľ䷨��Сʱ��ǩ��!\n"
#: getconf.c:489
#, c-format
msgid "Error: Invalid syntax in weekdays tag!\n"
-msgstr "´íÎó: ²»´æÔڵľ䷨ÔÚÔÚʱ¼ä±êÇ©ÖÐ!\n"
+msgstr "����: �����ڵľ䷨����ʱ����ǩ��!\n"
#: getconf.c:502
#, c-format
msgid "Too many log files in configuration file\n"
-msgstr "ÔÚÅäÖÃÎļþÖдæÔÚ¹ý¶àµÄÈÕÖ¾Îļþ\n"
+msgstr "�������ļ��д��ڹ�������־�ļ�\n"
#: getconf.c:514
#, c-format
msgid "Too many redirector log files in configuration file\n"
-msgstr "ÔÚÅäÖÃÎļþÖÐÓжàÓàµÄÖض¨ÏòÈÕÖ¾Îļþ\n"
+msgstr "�������ļ����ж������ض�����־�ļ�\n"
#: getconf.c:658 getconf.c:665
#, c-format
msgid "Template file name is too long in parameter \"AuthUserTemplateFile\"\n"
-msgstr "ÔÚ²ÎÊýÖÐÁÙʱÎļþÃû¹ý³¤\"AuthUserTemplateFile\"\n"
+msgstr "�ڲ�������ʱ�ļ�������\"AuthUserTemplateFile\"\n"
#: getconf.c:683
#, c-format
"squidguard_log_format is deprecated and has been replaced by "
"redirector_log_format. Please update your configuration file.\n"
msgstr ""
-"squidguard_log_formatÒÑʧЧ£¬²¢ÇÒÒѾ±» redirector_log_format ËùÌæ´ú£¬Çë¸üÐÂ"
-"ÄúµÄÅäÖÃÎļþ¡£\n"
+"squidguard_log_format��ʧЧ�������Ѿ��� redirector_log_format ��������������"
+"���������ļ���\n"
#: getconf.c:702
#, fuzzy, c-format
"redirector_filter_out_date that does the action implied by its name as "
"opposed to redirector_ignore_date. Please update your configuration file.\n"
msgstr ""
-"squidguard_ignore_date ÒÑʧЧ£¬²¢ÇÒÒѾ±»redirector_ignore_dateËùÌæ´ú¡£Çë¸üÐÂ"
-"ÄúµÄÅäÖÃÎļþ¡£\n"
+"squidguard_ignore_date ��ʧЧ�������Ѿ���redirector_ignore_date��������������"
+"���������ļ���\n"
#: getconf.c:707
#, fuzzy, c-format
"redirector_filter_out_date that does the action implied by its name as "
"opposed to squidguard_ignore_date. Please update your configuration file.\n"
msgstr ""
-"squidguard_ignore_date ÒÑʧЧ£¬²¢ÇÒÒѾ±»redirector_ignore_dateËùÌæ´ú¡£Çë¸üÐÂ"
-"ÄúµÄÅäÖÃÎļþ¡£\n"
+"squidguard_ignore_date ��ʧЧ�������Ѿ���redirector_ignore_date��������������"
+"���������ļ���\n"
#: getconf.c:714
#, fuzzy, c-format
"dansguardian_filter_out_date that does the action implied by its name as "
"opposed to dansguardian_ignore_date. Please update your configuration file.\n"
msgstr ""
-"squidguard_ignore_date ÒÑʧЧ£¬²¢ÇÒÒѾ±»redirector_ignore_dateËùÌæ´ú¡£Çë¸üÐÂ"
-"ÄúµÄÅäÖÃÎļþ¡£\n"
+"squidguard_ignore_date ��ʧЧ�������Ѿ���redirector_ignore_date��������������"
+"���������ļ���\n"
#: getconf.c:763 getconf.c:768
#, c-format
msgid "The \"byte_cost\" parameter of the configuration file is invalid\n"
-msgstr "\"byte_cost\" ÅäÖÃÎļþµÄ²ÎÊý²»´æÔÚ\n"
+msgstr "\"byte_cost\" �����ļ��IJ���������\n"
#: getconf.c:775
#, c-format
msgid "SARG: Unknown option %s\n"
-msgstr "SARG: δ֪µÄÑ¡Ïî %s\n"
+msgstr "SARG: δ֪��ѡ�� %s\n"
#: getconf.c:784
#, c-format
msgid "Loading configuration from %s\n"
-msgstr "ÔØÈëÅäÖÃ´Ó %s\n"
+msgstr "�������ô� %s\n"
#: getconf.c:787
#, c-format
msgid "(getconf) Cannot open file %s\n"
-msgstr "(getconf) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(getconf) ���ܴ����ļ� %s\n"
#: grepday.c:144
#, fuzzy, c-format
msgid "realloc error (%<PRIu64> bytes required)\n"
-msgstr "ÖØзÖÅä´íÎó (%zu bytes required)\n"
+msgstr "���·������� (%zu bytes required)\n"
#: grepday.c:157
#, c-format
msgid "(grepday) iconv failed to convert string \"%s\" from %s to UTF-8 - %s\n"
-msgstr "(grepday) iconvת»»×Ö·û´®Ê§°Ü \"%s\" ´Ó %s µ½ UTF-8 - %s \n"
+msgstr "(grepday) iconvת���ַ���ʧ�� \"%s\" �� %s �� UTF-8 - %s \n"
#: grepday.c:170
#, c-format
msgid "libgd failed to calculate the bounding box of the text \"%s\": %s\n"
-msgstr "libgd ¼ÆËãÎı¾Öеı߽çʧ°Ü \"%s\":%s\n"
+msgstr "libgd �����ı��еı߽�ʧ�� \"%s\":%s\n"
#: grepday.c:237
#, c-format
msgid "libgd failed to render the text \"%s\": %s\n"
-msgstr "libgb Ìá½»Îı¾Ê±Ê§°Ü \"%s\": %s\n"
+msgstr "libgb �ύ�ı�ʱʧ�� \"%s\": %s\n"
#: grepday.c:296
#, fuzzy, c-format
msgid "Minimum for Y scale of the graph is out of range: %<PRId64>\n"
-msgstr "ÊÓͼµÄY±ÈÀý³¬³ö×îС·¶Χ: %lld\n"
+msgstr "��ͼ��Y����������С��Χ: %lld\n"
#: grepday.c:300
#, fuzzy, c-format
msgid "Maximum for Y scale of the graph is out of range: %<PRId64>\n"
-msgstr "ÊÓͼµÄY±ÈÀý³¬³ö×î´ó·¶Χ: %lld\n"
+msgstr "��ͼ��Y��������������Χ: %lld\n"
#: grepday.c:328
#, c-format
msgid "Unknown type %d for Y axis scale\n"
-msgstr "δ֪ÀàÐÍ %d ¶ÔÓÚYÖá±ÈÀý\n"
+msgstr "δ֪���� %d ����Y������\n"
#: grepday.c:489
#, c-format
msgid "Unknown color \"%s\" requested for the graph. Using orange instead\n"
-msgstr "δ֪µÄÑÕÉ« \"%s\" ¶ÔÓÚ¸ÃͼÐÎ, ÇëʹÓóÈÉ«Ìæ´ú\n"
+msgstr "δ֪����ɫ \"%s\" ���ڸ�ͼ��, ��ʹ�ó�ɫ����\n"
#: grepday.c:557
msgid "SARG, "
#: grepday.c:561
#, c-format
msgid "User: %s"
-msgstr "Óû§: %s"
+msgstr "�û�: %s"
#: grepday.c:617 grepday.c:734
#, fuzzy, c-format
msgid "user name too long for %s/%s/%s\n"
-msgstr "Óû§Ãû¹ý³¤ %s/%s.day\n"
+msgstr "�û������� %s/%s.day\n"
#: grepday.c:621 grepday.c:692
#, c-format
msgid "(grepday) Cannot open log file %s\n"
-msgstr "(grepday) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(grepday) ���ܴ�����־�ļ� %s\n"
#: grepday.c:638
#, c-format
#: grepday.c:648
#, c-format
msgid "(grepday) Fontname %s not found\n"
-msgstr "(grepday) ×ÖÌåÃû³Æ %s ÕÒ²»µ½\n"
+msgstr "(grepday) �������� %s �Ҳ���\n"
#: grepday.c:655
#, c-format
msgid "(grepday) iconv cannot convert from %s to UTF-8 - %s\n"
-msgstr "(grepday) iconv ²»ÄÜת»»´Ó %s µ½ UTF-8 - %s\n"
+msgstr "(grepday) iconv ����ת���� %s �� UTF-8 - %s\n"
#: grepday.c:679
#, c-format
msgid "user name too long for %s/%s.day\n"
-msgstr "Óû§Ãû¹ý³¤ %s/%s.day\n"
+msgstr "�û������� %s/%s.day\n"
#: grepday.c:702 redirector.c:487 repday.c:81
#, c-format
msgid "Invalid date in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: grepday.c:708
#, c-format
msgid "Invalid entry in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧÊäÈë %s\n"
+msgstr "���ļ��д�����Ч���� %s\n"
#: grepday.c:714 repday.c:106
#, c-format
msgid "Invalid number of bytes in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÊý×Ö×Ö½Ú %s\n"
+msgstr "���ļ��д�����Ч�������ֽ� %s\n"
#: grepday.c:721 repday.c:113
#, c-format
msgid "Invalid elapsed time in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄʱ¼ä¶Î %s\n"
+msgstr "���ļ��д�����Ч��ʱ���� %s\n"
#: grepday.c:738
#, fuzzy, c-format
msgid "(grepday) Cannot open output file %s\n"
-msgstr "(grepday) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(grepday) ���ܴ�����־�ļ� %s\n"
#: grepday.c:741
#, fuzzy
msgid "Graph report"
-msgstr "ÈÕ±¨"
+msgstr "�ձ�"
#: grepday.c:748 grepday.c:761 index.c:263
msgid "DAYS"
-msgstr "ÈÕ"
+msgstr "��"
#: html.c:64
#, fuzzy, c-format
msgid "File name too long: %s/sargtmp.int_unsort\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
+msgstr "�ļ�������: %s/%s%s\n"
#: html.c:69
#, fuzzy, c-format
msgid "File name too long: %s/sargtmp.int_log\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s.ip\n"
+msgstr "�ļ�������: %s/%s.ip\n"
#: html.c:87
#, c-format
msgid "Destination directory too long: %s/%s\n"
-msgstr "Ŀ±êĿ¼¹ý³¤: %s/%s\n"
+msgstr "Ŀ��Ŀ¼����: %s/%s\n"
#: html.c:98 index.c:543 index.c:551 util.c:331 util.c:342 util.c:931
#, fuzzy, c-format
msgid "Cannot create directory %s - %s\n"
-msgstr "´ò¿ªÎļþ¼Ðʱʧ°Ü %s - %s\n"
+msgstr "�����ļ���ʱʧ�� %s - %s\n"
#: html.c:105
#, fuzzy, c-format
msgid "Input file name too long: %s/htmlrel.txt\n"
-msgstr "ÊäÈëµÄÃû³Æ¹ý³¤: %s/%s\n"
+msgstr "���������ƹ���: %s/%s\n"
#: html.c:110
#, c-format
msgid "(html3) Cannot open file %s\n"
-msgstr "(html3) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html3) ���ܴ����ļ� %s\n"
#: html.c:115
#, c-format
msgid "Output file name too long: %s/%s/%s.html\n"
-msgstr "Êä³öÎļþÃû¹ý³¤: %s/%s/%s.html\n"
+msgstr "�����ļ�������: %s/%s/%s.html\n"
#: html.c:119
+<<<<<<< HEAD
+#, c-format
+msgid "File name too long: %s/%s/denied_%s.html\n"
+msgstr "�ļ�������: %s/%s/denied_%s.html\n"
+=======
#, fuzzy, c-format
msgid "File name too long: %s/denied_%s.html\n"
--msgstr "ÎļþÃû¹ý³¤: %s/%s/denied_%s.html\n"
++msgstr "�ļ�������: %s/%s/denied_%s.html\n"
+>>>>>>> origin/v2.3
#: html.c:140 html.c:230 topuser.c:308
#, c-format
msgid "There is a broken number of access in file %s\n"
-msgstr "Óв»ÍêÕûµÄ·ÃÎÊÊý×ÖÔÚÎļþ %s\n"
+msgstr "�в������ķ����������ļ� %s\n"
#: html.c:145
#, c-format
msgid "There is a broken downloaded size in file %s\n"
-msgstr "Óв»ÍêÕûµÄÏÂÔØ´óСÔÚÎļþ %s\n"
+msgstr "�в����������ش�С���ļ� %s\n"
#: html.c:154 html.c:242
#, c-format
msgid "There is a broken access code in file %s\n"
-msgstr "Óв»ÍêÕûµÄ·ÃÎÊ´úÂëÔÚÎļþ %s\n"
+msgstr "�в������ķ��ʴ������ļ� %s\n"
#: html.c:158 html.c:246 report.c:171
#, c-format
msgid "There is a broken elapsed time in file %s\n"
-msgstr "Óв»ÍêÕûµÄʱ¼äÔÚÎļþ %s\n"
+msgstr "�в�������ʱ�����ļ� %s\n"
#: html.c:163
#, c-format
msgid "There is a broken in-cache volume in file %s\n"
-msgstr "Óв»ÍêÕûµÄin-cache¾íÔÚÎļþ %s\n"
+msgstr "�в�������in-cache�����ļ� %s\n"
#: html.c:168
#, c-format
msgid "There is a broken out-cache volume in file %s\n"
-msgstr "Óв»ÍêÕûµÄout-cache¾íÔÚÎļþ %s\n"
+msgstr "�в�������out-cache�����ļ� %s\n"
#: html.c:177
#, c-format
msgid "(html5) Cannot open file %s\n"
-msgstr "(html5) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html5) ���ܴ����ļ� %s\n"
#: html.c:181 html.c:187
msgid "User report"
-msgstr "Óû§±¨¸æ"
+msgstr "�û�����"
#: html.c:183 repday.c:128 report.c:259 report.c:263 smartfilter.c:177
msgid "User"
-msgstr "Óû§"
+msgstr "�û�"
#: html.c:185 report.c:261
#, c-format
msgid "Sort: %s, %s"
msgstr ""
+<<<<<<< HEAD
+#: html.c:198 smartfilter.c:109 topuser.c:242
+msgid "SmartFilter"
+msgstr "���ܹ���"
+
+#: html.c:198
+msgid "Report"
+msgstr "����"
+
+#: html.c:212 topuser.c:278
+=======
#: html.c:192
#, fuzzy
msgid "SmartFilter report"
--msgstr "ÖÇÄܹýÂË"
++msgstr "���ܹ���"
#: html.c:211 topuser.c:278
+>>>>>>> origin/v2.3
msgid "IN-CACHE-OUT"
msgstr "IN-CACHE-OUT"
#: html.c:222
#, c-format
msgid "Making report: %s\n"
-msgstr "±ê¼Ç±¨¸æ: %s\n"
+msgstr "���DZ���: %s\n"
#: html.c:234 topuser.c:304 util.c:771
#, c-format
msgid "There is a broken number of bytes in file %s\n"
-msgstr "Óв»ÍêÕûµÄ×Ö½ÚÊý×ÖÔÚÎļþ %s\n"
+msgstr "�в��������ֽ��������ļ� %s\n"
#: html.c:250
#, c-format
msgid "There is a broken in cache column in file %s\n"
-msgstr "ÖжÏÔÚ»º´æÁÐÄÚÔÚÎļþ %s\n"
+msgstr "�ж��ڻ����������ļ� %s\n"
#: html.c:254
#, c-format
msgid "There is a broken out of cache column in file %s (%d)\n"
-msgstr "ÖжÏÔÚ»º´æÁÐÍâÔÚÎļþ %s(%d)\n"
+msgstr "�ж��ڻ����������ļ� %s(%d)\n"
#: html.c:268 topuser.c:355
msgid "date/time report"
-msgstr "ÈÕÆÚ/ʱ¼ä ±¨¸æ"
+msgstr "����/ʱ�� ����"
#: html.c:321
msgid "DENIED"
-msgstr "×èֹ"
+msgstr "��ֹ"
+<<<<<<< HEAD
+#: html.c:330
+#, fuzzy, c-format
+msgid "Cannot delete unused file \"%s\" - %s\n"
+msgstr "��ɾ����ʱ�ļ� %s - %s\n"
+
+#: html.c:336
+=======
#: html.c:335
+>>>>>>> origin/v2.3
#, c-format
msgid "File name too long: %s/%s.ip\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s.ip\n"
+msgstr "�ļ�������: %s/%s.ip\n"
#: html.c:340
#, c-format
msgid "(html6) Cannot open file %s\n"
-msgstr "(html6)²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html6)���ܴ����ļ� %s\n"
#: html.c:345
#, c-format
msgid "(html7) Cannot open file %s\n"
-msgstr "(html7) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html7) ���ܴ����ļ� %s\n"
#: html.c:356 html.c:417
#, c-format
msgid "Maybe you have a broken user IP in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÓû§IPµØÖ·ÔÚÄãµÄ %s ÎļþÖÐ \n"
+msgstr "�������в��������û�IP��ַ������ %s �ļ��� \n"
#: html.c:365 log.c:1241
#, c-format
msgid "Maybe you have a broken day in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÈÕÆÚÔÚÄãµÄ %s ÎļþÖÐ \n"
+msgstr "�������в����������������� %s �ļ��� \n"
#: html.c:369 log.c:1200
#, c-format
msgid "Maybe you have a broken time in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄʱ¼äÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "�������в�������ʱ�������� %s �ļ���\n"
#: html.c:373 html.c:421
#, c-format
msgid "Maybe you have a broken size in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄ´óСÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "�������в������Ĵ�С������ %s �ļ���\n"
#: html.c:377 html.c:425 log.c:1030 log.c:1035
#, c-format
msgid "Maybe you have a broken elapsed time in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄ¹ýȥʱ¼äÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "�������в������Ĺ�ȥʱ�������� %s �ļ���\n"
#: html.c:399
#, c-format
msgid "(html8) Cannot open file %s\n"
-msgstr "(html8) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html8) ���ܴ����ļ� %s\n"
#: html.c:533
#, c-format
msgid "(html9) Cannot open file %s\n"
-msgstr "(html9) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html9) ���ܴ����ļ� %s\n"
#: html.c:548
#, c-format
msgid "(html10) Cannot open file %s\n"
-msgstr "(html10) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(html10) ���ܴ����ļ� %s\n"
#: html.c:555
#, c-format
msgid "User %s limit exceeded (%d MB). Added to file %s\n"
-msgstr "Óû§%s ³¬³öÏÞÖÆ (%d MB). Ôö¼Óµ½Îļþ %s\n"
+msgstr "�û�%s �������� (%d MB). ���ӵ��ļ� %s\n"
#: index.c:54
#, c-format
msgid "Making index.html\n"
-msgstr "񈬀 index.html\n"
+msgstr "���� index.html\n"
#: index.c:58 index.c:112 index.c:167 index.c:228 index.c:330 indexonly.c:38
#: lastlog.c:56
#, c-format
msgid "Failed to open directory %s - %s\n"
-msgstr "´ò¿ªÎļþ¼Ðʱʧ°Ü %s - %s\n"
+msgstr "�����ļ���ʱʧ�� %s - %s\n"
#: index.c:143 index.c:195 index.c:256
#, c-format
msgid "(index) Cannot open file %s - %s\n"
-msgstr "(index) ²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+msgstr "(index) ���ܴ����ļ� %s - %s\n"
#: index.c:146 index.c:427
msgid "SARG report"
msgid_plural "SARG reports"
-msgstr[0] "SARG ±¨¸æ"
+msgstr[0] "SARG ����"
#: index.c:149 index.c:202 index.c:263
msgid "YEAR"
-msgstr "Äê"
+msgstr "��"
#: index.c:151
msgid "SIZE"
-msgstr "´óС"
+msgstr "��С"
#: index.c:182
#, c-format
"Too many month directories in %s\n"
"Supernumerary entries are ignored\n"
msgstr ""
-"̫¶àÔ·ÝÎļþ¼ÐÔÚ %s\n"
-"¶àÓàµÄÊäÈë±»ºöÂÔ\n"
+"̫���·��ļ����� %s\n"
+"���������뱻����\n"
#: index.c:198
#, c-format
#: index.c:202 index.c:263
msgid "MONTH"
-msgstr "Ô·Ý"
+msgstr "�·�"
#: index.c:243
#, c-format
"Too many day directories in %s\n"
"Supernumerary entries are ignored\n"
msgstr ""
-"¹ý¶àµÄÈÕÆÚÎļþ¼ÐÔÚ %s\n"
-"¶àÓàÊä³ö±»Ìø¹ý\n"
+"�����������ļ����� %s\n"
+"��������������\n"
#: index.c:259
#, c-format
msgid "SARG: report for %04d/%02d"
msgid_plural "SARG: reports for %04d/%02d"
-msgstr[0] "SARG ±¨¸æ %04d/%02d"
+msgstr[0] "SARG ���� %04d/%02d"
#: index.c:280 index.c:286 index.c:293 index.c:456
#, c-format
msgid "Write error in the index %s\n"
-msgstr "дÈë´íÎóµÄË÷Òý %s\n"
+msgstr "����������� %s\n"
#: index.c:282 index.c:288 index.c:295 index.c:458
#, c-format
msgid "Failed to close the index file %s - %s\n"
-msgstr "À뿪Ë÷ÒýÎļþʱʧ°Ü %s - %s\n"
+msgstr "�뿪�����ļ�ʱʧ�� %s - %s\n"
#: index.c:340
#, c-format
#: index.c:345 index.c:405
#, c-format
msgid "not enough memory to sort the index\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥ÅÅÐòË÷Òý\n"
+msgstr "û���㹻���ڴ�ȥ��������\n"
#: index.c:367
#, c-format
msgid "Maybe you have a broken week day in your %s%s/sarg-date file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÈÕÆÚÔÚÄãµÄ %s%s/sarg-date ÎļþÖÐ\n"
+msgstr "�������в����������������� %s%s/sarg-date �ļ���\n"
#: index.c:371
#, c-format
msgid "Maybe you have a broken month in your %s%s/sarg-date file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÔ·ÝÔÚÄãµÄ %s%s/sarg-date ÎļþÖÐ\n"
+msgstr "�������в��������·������� %s%s/sarg-date �ļ���\n"
#: index.c:375
#, c-format
msgid "Maybe you have a broken day in your %s%s/sarg-date file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÈÕÆÚÔÚÄãµÄ %s%s/sarg-date ÎļþÖÐ\n"
+msgstr "�������в����������������� %s%s/sarg-date �ļ���\n"
#: index.c:379 index.c:389
#, c-format
msgid "Maybe you have a broken time in your %s%s/sarg-date file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄʱ¼äÔÚÄãµÄ %s%s/sarg-date ÎļþÖÐ\n"
+msgstr "�������в�������ʱ�������� %s%s/sarg-date �ļ���\n"
#: index.c:384
#, c-format
msgid "Maybe you have a broken year in your %s%s/sarg-date file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÄê·ÝÔÚÄãµÄ %s%s/sarg-date ÎļþÖÐ\n"
+msgstr "�������в����������������� %s%s/sarg-date �ļ���\n"
#: index.c:397
#, c-format
msgid "Not enough memory to store the directory name \"%s\" in the index\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢ÎļþÃûÔÚ \"%s\" ÔÚË÷ÒýÖÐ\n"
+msgstr "û���㹻���ڴ���洢�ļ����� \"%s\" ��������\n"
#: index.c:424
#, c-format
msgid "(index) Cannot open file %s\n"
-msgstr "(index) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(index) ���ܴ����ļ� %s\n"
#: index.c:432
msgid "FILE/PERIOD"
-msgstr "Îļþ/ÖÜÆÚ"
+msgstr "�ļ�/����"
#: index.c:432
msgid "CREATION DATE"
-msgstr "´´½¨ÈÕÆÚ"
+msgstr "��������"
#. TRANSLATORS: This is a column header showing the users who visited each site.
#. TRANSLATORS: This is a column header showing the number of users who visited a sites.
#: index.c:432 siteuser.c:101 topsites.c:258
msgid "USERS"
-msgstr "Óû§"
+msgstr "�û�"
#: index.c:561 index.c:663
#, c-format
msgid "(index) rename error from \"%s\" to \"%s\" - %s\n"
-msgstr "(index)ÖØÃüÃû´íÎó´Ó \"%s\" ÖÁ \"%s\" - %s\n"
+msgstr "(index)������������ \"%s\" �� \"%s\" - %s\n"
#: index.c:572
#, c-format
msgid "failed to create link \"%s\" to \"%s\" - %s\n"
-msgstr "´´½¨Á¬½Óʧ°Ü \"%s\" ÖÁ \"%s\" - %s\n"
+msgstr "�������ʧ�� \"%s\" �� \"%s\" - %s\n"
#: indexonly.c:46
#, c-format
msgid "Name of the file to remove is too long: %s/%s\n"
-msgstr "ÒƳýµÄÎļþÃû¹ý³¤: %s/%s\n"
+msgstr "�Ƴ����ļ�������: %s/%s\n"
+
+<<<<<<< HEAD
+#: indexonly.c:50
+#, fuzzy, c-format
+msgid "Failed to remove the file %s: %s\n"
+msgstr "�Ƴ��ļ�ʧ�� %s\n"
+=======
+>>>>>>> origin/v2.3
#: ip2name.c:66 ip2name.c:198
#, c-format
msgid "Chaining IP resolving module \"%s\"\n"
#: ip2name.c:226
#, fuzzy, c-format
msgid "Not enough memory to store the names corresponding to the IP address\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢±»ÅųýµÄIPµØַ\n"
+msgstr "û���㹻���ڴ���洢���ų���IP��ַ\n"
#: ip2name.c:279
#, fuzzy, c-format
msgid "Cannot resolve host name %s: %s\n"
-msgstr " ²»ÄÜɾ³ý %s - %s\n"
+msgstr " ����ɾ�� %s - %s\n"
#: ip2name.c:286
#, c-format
#: ip2name_dns.c:93
#, fuzzy, c-format
msgid ""
+<<<<<<< HEAD
+"IP to name resolution (getnameinfo) on IP address %s failed with error %d - "
+"%s\n"
+msgstr "IP��ַ�����ֵ�ת�� (getnameinfo) ��IP��ַ %s ��������ʧ�� %d - %s\n"
+=======
"IP to name resolution (getnameinfo) on IP address \"%s\" failed with error "
"%d - %s\n"
--msgstr "IPµØÖ·µ½Ãû×ÖµÄת»» (getnameinfo) ÔÚIPµØÖ· %s ·¢Éú´íÎóʧ°Ü %d - %s\n"
++msgstr "IP��ַ�����ֵ�ת�� (getnameinfo) ��IP��ַ %s ��������ʧ�� %d - %s\n"
+>>>>>>> origin/v2.3
#: ip2name_exec.c:61
#, c-format
#: ip2name_exec.c:95
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "IP address %s too long for the command to run\n"
+msgstr "IP��ַ�������� %s\n"
+
+#: ip2name_exec.c:103
+#, fuzzy, c-format
+msgid "IP address %.*s too long for the command to run\n"
+msgstr "IP��ַ�������� %s\n"
+=======
msgid "IP address \"%s\" too long for the command to run\n"
--msgstr "IPµØÖ·¹ý³¤»ò²»´æÔÚ %s\n"
++msgstr "IP��ַ�������� %s\n"
#: ip2name_exec.c:103
#, fuzzy, c-format
msgid "IP address \"%.*s\" too long for the command to run\n"
--msgstr "IPµØÖ·¹ý³¤»ò²»´æÔÚ %s\n"
++msgstr "IP��ַ�������� %s\n"
+>>>>>>> origin/v2.3
#: ip2name_exec.c:113
#, fuzzy, c-format
msgid "Cannot run command %s\n"
-msgstr "ÅÅÐòÃüÁî: %s\n"
+msgstr "��������: %s\n"
#: ip2name_exec.c:120
#, fuzzy, c-format
msgid "Command failed: %s\n"
-msgstr "ÃüÁî: %s\n"
+msgstr "����: %s\n"
#: lastlog.c:51 lastlog.c:106
#, c-format
msgid "(lastlog) Cannot open temporary file %s\n"
-msgstr "(lastlog) ²»ÄÜ´ò¿ªÁÙʱÎļþ %s\n"
+msgstr "(lastlog) ���ܴ�����ʱ�ļ� %s\n"
#: lastlog.c:65
#, c-format
msgid "Failed to get the creation time of %s\n"
-msgstr "»ñÈ¡Îļþ´´½¨Ê±¼äʱʧ°Ü %s\n"
+msgstr "��ȡ�ļ�����ʱ��ʱʧ�� %s\n"
#: lastlog.c:119
#, c-format
msgid "Removing old report file %s\n"
-msgstr "Òƶ¯¾ÉµÄ±¨¸æÎļþ %s\n"
+msgstr "�ƶ��ɵı����ļ� %s\n"
#: lastlog.c:121
#, c-format
msgid "Directory name too long: %s%s\n"
-msgstr "Îļþ¼ÐÃû³Æ¹ý³¤: %s%s\n"
+msgstr "�ļ������ƹ���: %s%s\n"
+<<<<<<< HEAD
+#: lastlog.c:131
+#, c-format
+msgid "Failed to delete the file %s\n"
+msgstr "ɾ���ļ�ʧ�� %s\n"
+
+#: log.c:406
+=======
#: log.c:410
+>>>>>>> origin/v2.3
#, c-format
msgid "Too many log files passed on command line with option -l.\n"
-msgstr "´«ÈëÁ˹ý¶àµÄÈÕÖ¾ÎļþʹÓÃÃüÁîÐвÎÊý -l.\n"
+msgstr "�����˹�������־�ļ�ʹ�������в��� -l.\n"
#: log.c:414
#, c-format
msgid "Log file name too long passed on command line with option -l: %s\n"
-msgstr "´«ÈëÃüÁîÐвÎÊý -l µÄÈÕÖ¾ÎļþÃû¹ý³¤: %s\n"
+msgstr "���������в��� -l ����־�ļ�������: %s\n"
#: log.c:423
#, c-format
msgid "Too many redirector logs passed on command line with option -L.\n"
-msgstr "´«ÈëÃüÁîÐвÎÊý -LµÄÖض¨ÏòÈÕÖ¾Îļþ¹ý¶à.\n"
+msgstr "���������в��� -L���ض�����־�ļ�����.\n"
#: log.c:427
#, c-format
msgid ""
"Redirector log file name too long passed on command line with opton -L: %s\n"
-msgstr "´«ÈëÃüÁîÐвÎÊý -L µÄÖض¨ÏòÈÕÖ¾ÎļþÃû¹ý³¤: %s\n"
+msgstr "���������в��� -L ���ض�����־�ļ�������: %s\n"
#: log.c:461
#, fuzzy, c-format
- msgid "Time period passed on the command line with option -t must be MM:SS\n"
+ msgid "Time period passed on the command line with option -t must be HH:MM\n"
-msgstr "ʱ¼äÇø¼ä´«ÈëÃüÁîÐвÎÊý -t ²»´æÔÚ\n"
+msgstr "ʱ�����䴫�������в��� -t ������\n"
#: log.c:469
#, fuzzy, c-format
msgid ""
- "Time range passed on the command line with option -t must be MM:SS-MM:SS\n"
+ "Time range passed on the command line with option -t must be HH:MM-HH:MM\n"
-msgstr "ʱ¼äÇø¼ä´«ÈëÃüÁîÐвÎÊý -t ²»´æÔÚ\n"
+msgstr "ʱ�����䴫�������в��� -t ������\n"
#: log.c:497
#, fuzzy, c-format
msgid "Option -%c requires an argument\n"
-msgstr "ѡÏî -%c ÐèÒªÒ»¸öÅжÏ\n"
+msgstr "ѡ�� -%c ��Ҫһ���ж�\n"
#: log.c:515
#, fuzzy, c-format
msgid "Too many log files passed on command line.\n"
-msgstr "´«ÈëÁ˹ý¶àµÄÈÕÖ¾ÎļþʹÓÃÃüÁîÐвÎÊý -l.\n"
+msgstr "�����˹�������־�ļ�ʹ�������в��� -l.\n"
#: log.c:519
#, fuzzy, c-format
msgid "Log file name too long passed on command line: %s\n"
-msgstr "´«ÈëÃüÁîÐвÎÊý -l µÄÈÕÖ¾ÎļþÃû¹ý³¤: %s\n"
+msgstr "���������в��� -l ����־�ļ�������: %s\n"
#: log.c:528
#, c-format
#: log.c:532
#, c-format
msgid "Cannot open config file: %s - %s\n"
-msgstr "²»ÄÜ´ò¿ªÅäÖÃÎļþ: %s -%s\n"
+msgstr "���ܴ��������ļ�: %s -%s\n"
#: log.c:640
#, c-format
#: log.c:653
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "Deleting directory %s\n"
+msgstr "�����ļ���ʱʧ�� %s - %s\n"
+=======
msgid "Deleting temporary directory \"%s\"\n"
--msgstr "´ò¿ªÎļþ¼Ðʱʧ°Ü %s - %s\n"
++msgstr "�����ļ���ʱʧ�� %s - %s\n"
+>>>>>>> origin/v2.3
#: log.c:662 log.c:695
#, c-format
msgid "Parameters:\n"
-msgstr "²ÎÊý:\n"
+msgstr "����:\n"
#: log.c:663 log.c:696
#, c-format
msgid " Hostname or IP address (-a) = %s\n"
-msgstr " Ö÷»úÃû»òÕßIPµØַ(-a) = %s\n"
+msgstr " ����������IP��ַ(-a) = %s\n"
#: log.c:664 log.c:697
#, c-format
msgid " Useragent log (-b) = %s\n"
-msgstr " Óû§´úÀí ÈÕ־w (-b) = %s\n"
+msgstr " �û����� ��־w (-b) = %s\n"
#: log.c:665 log.c:698
#, c-format
msgid " Exclude file (-c) = %s\n"
-msgstr " Åųý Îļþ (-c) = %s\n"
+msgstr " �ų� �ļ� (-c) = %s\n"
#: log.c:666 log.c:699
#, c-format
msgid " Date from-until (-d) = %s\n"
-msgstr " ÈÕÆÚ ´Ó-ÖÁ (-d) = %s\n"
+msgstr " ���� ��-�� (-d) = %s\n"
#: log.c:667 log.c:700
#, c-format
msgid " Email address to send reports (-e) = %s\n"
-msgstr " ÓʼþµØÖ·ÓÃÀ´·¢Ëͱ¨¸æ (-e) = %s\n"
+msgstr " �ʼ���ַ������ͱ��� (-e) = %s\n"
#: log.c:668 log.c:701
#, c-format
msgid " Config file (-f) = %s\n"
-msgstr " ÅäÖÃÎļþ (-f) = %s\n"
+msgstr " �����ļ� (-f) = %s\n"
#: log.c:670 log.c:703
#, c-format
msgid " Date format (-g) = Europe (dd/mm/yyyy)\n"
-msgstr " ÈÕÆÚ¸ñʽ (-g) = Å·ÖÞ (dd/mm/yyyy)\n"
+msgstr " ���ڸ�ʽ (-g) = ŷ�� (dd/mm/yyyy)\n"
#: log.c:672 log.c:705
#, c-format
msgid " Date format (-g) = USA (mm/dd/yyyy)\n"
-msgstr " ÈÕÆÚ¸ñʽ (-g) = ÃÀ¹ú (mm/dd/yyyy)\n"
+msgstr " ���ڸ�ʽ (-g) = ��� (mm/dd/yyyy)\n"
#: log.c:674 log.c:707
#, c-format
msgid " Date format (-g) = Sites & Users (yyyy/ww)\n"
-msgstr " ÈÕÆÚ¸ñʽ (-g) = Õ¾µã & Óû§ (yyyy/ww)\n"
+msgstr " ���ڸ�ʽ (-g) = վ�� & �û� (yyyy/ww)\n"
#: log.c:675 log.c:708
#, c-format
msgid " IP report (-i) = %s\n"
-msgstr " IP±¨¸æ (-i) = %s\n"
+msgstr " IP���� (-i) = %s\n"
#: log.c:675 log.c:676 log.c:681 log.c:683 log.c:688 log.c:689 log.c:708
#: log.c:709 log.c:714 log.c:716 log.c:721 log.c:722
msgid "Yes"
-msgstr "ÊÇ"
+msgstr "��"
#: log.c:675 log.c:676 log.c:681 log.c:683 log.c:688 log.c:689 log.c:708
#: log.c:709 log.c:714 log.c:716 log.c:721 log.c:722
msgid "No"
-msgstr "·ñ"
+msgstr "��"
#: log.c:676 log.c:709
#, fuzzy, c-format
msgid " Keep temporary files (-k) = %s\n"
--msgstr " ÁÙʱÎļþĿ¼ (-w) = %s\n"
++msgstr " ��ʱ�ļ�Ŀ¼ (-w) = %s\n"
#: log.c:678 log.c:711
#, c-format
msgid " Input log (-l) = %s\n"
-msgstr " ÊäÈëµÄÈÕ־ (-l) = %s\n"
+msgstr " ��������־ (-l) = %s\n"
#: log.c:680 log.c:713
#, c-format
msgid " Redirector log (-L) = %s\n"
-msgstr " Öض¨ÏòÈÕ־ (-L) = %s\n"
+msgstr " �ض�����־ (-L) = %s\n"
#: log.c:681 log.c:714
#, c-format
msgid " Resolve IP Address (-n) = %s\n"
-msgstr " ת»»IPµØַ (-n) = %s\n"
+msgstr " ת��IP��ַ (-n) = %s\n"
#: log.c:682 log.c:715
#, c-format
msgid " Output dir (-o) = %s\n"
-msgstr " Êä³öĿ¼ (-o) = %s\n"
+msgstr " ����Ŀ¼ (-o) = %s\n"
#: log.c:683 log.c:716
#, c-format
msgid "Use Ip Address instead of userid (-p) = %s\n"
-msgstr "ʹÓÃIPµØÖ·Ìæ´úÓû§ID (-p) = %s\n"
+msgstr "ʹ��IP��ַ�����û�ID (-p) = %s\n"
#: log.c:684 log.c:717
#, c-format
msgid " Accessed site (-s) = %s\n"
-msgstr " ·ÃÎÊÕ¾µã (-s) = %s\n"
+msgstr " ����վ�� (-s) = %s\n"
#: log.c:685 log.c:718
#, c-format
msgid " Time (-t) = %s\n"
-msgstr " ʱ¼ä (-t) = %s\n"
+msgstr " ʱ�� (-t) = %s\n"
#: log.c:686 log.c:719
#, c-format
msgid " User (-u) = %s\n"
-msgstr " Óû§ (-u) = %s\n"
+msgstr " �û� (-u) = %s\n"
#: log.c:687 log.c:720
#, c-format
msgid " Temporary dir (-w) = %s\n"
-msgstr " ÁÙʱÎļþĿ¼ (-w) = %s\n"
+msgstr " ��ʱ�ļ�Ŀ¼ (-w) = %s\n"
#: log.c:688 log.c:721
#, c-format
msgid " Debug messages (-x) = %s\n"
-msgstr " ¾À´íÐÅϢ (-x) = %s\n"
+msgstr " �����Ϣ (-x) = %s\n"
#: log.c:689 log.c:722
#, c-format
msgid " Process messages (-z) = %s\n"
-msgstr " ½ø³ÌÐÅϢ (-z) = %s\n"
+msgstr " ������Ϣ (-z) = %s\n"
#: log.c:690 log.c:723
#, c-format
#: log.c:724 log.c:728
#, c-format
msgid "sarg version: %s\n"
-msgstr "sarg °汾: %s\n"
+msgstr "sarg �汾: %s\n"
#: log.c:731
#, c-format
msgid "Sarg compiled to report warnings if the output is inconsistent\n"
msgstr ""
+<<<<<<< HEAD
+#: log.c:740
+=======
#: log.c:761
+>>>>>>> origin/v2.3
#, c-format
msgid "setrlimit error - %s\n"
-msgstr "setrlimit ´íÎó - %s\n"
+msgstr "setrlimit ���� - %s\n"
#: log.c:772
#, c-format
msgid "Not enough memory to read a log file\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥¶ÁÈ¡Ò»¸öÈÕÖ¾Îļþ\n"
+msgstr "û���㹻���ڴ�ȥ��ȡһ����־�ļ�\n"
#: log.c:781 log.c:788
#, c-format
msgid "(log) Cannot open file: %s - %s\n"
-msgstr "(log) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ: %s - %s\n"
+msgstr "(log) ���ܴ�����־�ļ�: %s - %s\n"
#: log.c:801
#, c-format
msgid "Reading access log file: from stdin\n"
-msgstr "¶ÁÈ¡·ÃÎÊÈÕÖ¾Îļþ: ´Ó stdin\n"
+msgstr "��ȡ������־�ļ�: �� stdin\n"
#: log.c:807
#, c-format
msgid ""
"Cannot get the modification time of input log file %s (%s). Processing it "
"anyway\n"
-msgstr "²»Äܵõ½ÊäÈëÈÕÖ¾ÎļþµÄÐÞ¸Äʱ¼ä %s (%s). ½ø³ÌÕýÔÚ¼ÌÐø\n"
+msgstr "���ܵõ�������־�ļ�����ʱ�� %s (%s). �������ڼ���\n"
#: log.c:811
#, c-format
msgid "Ignoring old log file %s\n"
-msgstr "ºöÂԳ¾ɵÄÈÕÖ¾Îļþ %s\n"
+msgstr "���Գ¾ɵ���־�ļ� %s\n"
#: log.c:818 log.c:889
#, c-format
msgid "(log) Cannot open log file: %s - %s\n"
-msgstr "(log) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ: %s - %s\n"
+msgstr "(log) ���ܴ�����־�ļ�: %s - %s\n"
#: log.c:821
#, c-format
msgid "Reading access log file: %s\n"
-msgstr "¶ÁÈ¡·ÃÎÊÈÕÖ¾Îļþ: %s\n"
+msgstr "��ȡ������־�ļ�: %s\n"
#: log.c:849
#, c-format
msgid "SARG: Records in file: %lu, reading: %3.2f%%"
-msgstr "SARG: ¼Í¼ÔÚÎļþ: %lu, ¶Áȡ: %3.2f%%"
+msgstr "SARG: ��¼���ļ�: %lu, ��ȡ: %3.2f%%"
#: log.c:863
#, c-format
msgid "Log is from Microsoft ISA: %s\n"
-msgstr "ÈÕÖ¾À´×Ô΢ÈíISA: %s\n"
+msgstr "��־�����ISA: %s\n"
#: log.c:871
#, c-format
msgid "The name of the file is invalid: %s\n"
-msgstr "ÎļþÃû²»´æÔÚ: %s\n"
+msgstr "�ļ���������: %s\n"
#: log.c:885
#, fuzzy, c-format
msgid "File name too long: %s/sarg_temp.log\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s.ip\n"
+msgstr "�ļ�������: %s/%s.ip\n"
#: log.c:898
#, c-format
msgid "SARG: Records in file: %lu, reading: %3.2lf%%"
-msgstr "SARG: ¼Í¼ÔÚÎļþ: %lu, ¶Áȡ: %3.2lf%%"
+msgstr "SARG: ��¼���ļ�: %lu, ��ȡ: %3.2lf%%"
#: log.c:914
#, c-format
msgid "Maybe you have a broken record or garbage in your exclusion string\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄ¼Í¼»òÕßÀ¬»øÔÚÄãµÄ½ûÖ¹×Ö·û´®\n"
+msgstr "��������һ���������ļ�¼������������Ľ�ֹ�ַ���\n"
#: log.c:935
#, c-format
msgid "Maybe you have a broken time in your access.log file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄʱ¼äÔÚÄãµÄaccess.logÎļþ\n"
+msgstr "��������һ����������ʱ��������access.log�ļ�\n"
#: log.c:996 log.c:1000 log.c:1005 log.c:1009 log.c:1013 log.c:1118 log.c:1122
#: log.c:1126 log.c:1194 useragent.c:89
#, c-format
msgid "Maybe you have a broken date in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÈÕÆÚÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�������������������� %s �ļ���\n"
#: log.c:1022 log.c:1133 log.c:1250
#, fuzzy, c-format
msgid "Invalid time found in %s\n"
-msgstr "ÎÞЧµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "��Ч��ʱ�����ļ��� %s\n"
#: log.c:1040
#, c-format
msgid "Maybe you have a broken client IP address in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄ¿Í»§¶ËIPµØÖ·ÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ���������Ŀͻ���IP��ַ������ %s �ļ���\n"
#: log.c:1044
#, c-format
msgid "Maybe you have a broken result code in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄ½á¹û´úÂëÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ���������Ľ������������� %s �ļ���\n"
#: log.c:1048
#, c-format
msgid "Maybe you have a broken amount of data in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÊý¾Ý×ܺÍÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ���������������ܺ������� %s �ļ���\n"
#: log.c:1052
#, c-format
msgid "Maybe you have a broken request method in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÐèÇó·½·¨ÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�������������������� %s �ļ���\n"
#: log.c:1060 log.c:1188
#, c-format
msgid "Maybe you have a broken user ID in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÓû§IDÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�����������û�ID������ %s �ļ���\n"
#: log.c:1069
#, c-format
msgid "Cannot convert the timestamp from the squid log file\n"
-msgstr "²»ÄÜת»»Ê±¼ä´Á´ÓsquidÈÕÖ¾Îļþ\n"
+msgstr "����ת��ʱ�����squid��־�ļ�\n"
#: log.c:1182
#, c-format
msgid "Maybe you have a broken IP in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄIPµØÖ·ÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ����������IP��ַ������ %s �ļ���\n"
#: log.c:1206
#, c-format
msgid "Maybe you have a broken download duration in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÏÂÔسÖÐøʱ¼äÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�������������س���ʱ�������� %s �ļ���\n"
#: log.c:1212
#, c-format
msgid "Maybe you have a broken download size in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÏÂÔØ´óСÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�������������ش�С������ %s �ļ���\n"
#: log.c:1220
#, c-format
msgid "Maybe you have a broken access code in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄ·ÃÎÊ´úÂëÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ���������ķ��ʴ��������� %s �ļ���\n"
#: log.c:1233
#, c-format
msgid "Maybe you have a broken year in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÄê·ÝÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�������������������� %s �ļ���\n"
#: log.c:1237
#, c-format
msgid "Maybe you have a broken month in your %s file\n"
-msgstr "¿ÉÄÜÄãÓÐÒ»¸ö²»ÍêÕûµÄÔ·ÝÔÚÄãµÄ %s ÎļþÖÐ\n"
+msgstr "��������һ�����������·������� %s �ļ���\n"
#: log.c:1257
#, c-format
msgid "Unknown input log file format\n"
-msgstr "δ֪µÄÊäÈëÈÕÖ¾Îļþ¸ñʽ\n"
+msgstr "δ֪��������־�ļ���ʽ\n"
#: log.c:1282
#, c-format
msgid "User ID too long: %s\n"
-msgstr "Óû§ID¹ý³¤: %s\n"
+msgstr "�û�ID����: %s\n"
#: log.c:1295
#, c-format
msgid "Excluded code: %s\n"
-msgstr "ÒÑÅųý´úÂë: %s\n"
+msgstr "���ų�����: %s\n"
#: log.c:1355
#, c-format
msgid "Excluded site: %s\n"
-msgstr "ÒÑÅųýÕ¾µã: %s\n"
+msgstr "���ų�վ��: %s\n"
#: log.c:1407
#, c-format
msgid "Excluded user: %s\n"
-msgstr "ÒÑÅųýÓû§: %s\n"
+msgstr "���ų��û�: %s\n"
#: log.c:1441
#, c-format
msgid "Not enough memory to store the user %s\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢Óû§ %s\n"
+msgstr "û���㹻���ڴ���洢�û� %s\n"
#: log.c:1469
#, c-format
msgid "Failed to close the log file of user %s - %s\n"
-msgstr "¹Ø±ÕÓû§ÈÕÖ¾Îļþʧ°Ü %s - %s\n"
+msgstr "�ر��û���־�ļ�ʧ�� %s - %s\n"
#: log.c:1479
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "Temporary user file name too long: %s/%s.unsort\n"
+msgstr "��ʱ�û��ļ�������: %s/sarg/%s.unsort\n"
+=======
msgid "Temporary user file name too long: %s/%s.user_unsort\n"
--msgstr "ÁÙʱÓû§ÎļþÃû¹ý³¤: %s/sarg/%s.unsort\n"
++msgstr "��ʱ�û��ļ�������: %s/sarg/%s.unsort\n"
+>>>>>>> origin/v2.3
#: log.c:1483 log.c:1503
#, c-format
msgid "(log) Cannot open temporary file: %s - %s\n"
-msgstr "(log) ²»ÄÜ´ò¿ªÁÙʱÎļþ: %s - %s\n"
+msgstr "(log) ���ܴ�����ʱ�ļ�: %s - %s\n"
#: log.c:1489
#, c-format
msgid "Write error in the log file of user %s\n"
-msgstr "ÈÕÖ¾ÎļþÖеÄÓû§´æÔÚдÈë´íÎó %s\n"
+msgstr "��־�ļ��е��û�����д������ %s\n"
#: log.c:1554
#, c-format
msgid "SARG: Records in file: %lu, reading: %3.2f%%\n"
-msgstr "SARG: ¼Í¼ÔÚÎļþ: %lu, reading: %3.2f%%\n"
+msgstr "SARG: ��¼���ļ�: %lu, reading: %3.2f%%\n"
#: log.c:1560
#, c-format
msgid " Records read: %ld, written: %ld, excluded: %ld\n"
-msgstr "¼Í¼ ¶ÁÈ¡: %ld, ÒÑдÈë: %ld, Åųý: %ld\n"
+msgstr "��¼ ��ȡ: %ld, ��д��: %ld, �ų�: %ld\n"
#: log.c:1582
#, c-format
msgid "Log with mixed records format (squid and common log)\n"
-msgstr "ÈÕÖ¾Óë¼Í¼»ìºÏ¸ñʽ(squid and common log)\n"
+msgstr "��־����¼���ϸ�ʽ(squid and common log)\n"
#: log.c:1585
#, c-format
msgid "Common log format\n"
-msgstr "ÆÕͨÈÕÖ¾¸ñʽ\n"
+msgstr "��ͨ��־��ʽ\n"
#: log.c:1588
#, c-format
msgid "Squid log format\n"
-msgstr "SquidÈÕÖ¾¸ñʽ\n"
+msgstr "Squid��־��ʽ\n"
#: log.c:1591
#, c-format
msgid "Sarg log format\n"
-msgstr "SargÈÕÖ¾¸ñʽ\n"
+msgstr "Sarg��־��ʽ\n"
#: log.c:1594
#, c-format
msgid "Log with invalid format\n"
-msgstr "²»´æÔÚµÄÈÕÖ¾¸ñʽ\n"
+msgstr "�����ڵ���־��ʽ\n"
#: log.c:1598
#, c-format
msgid "No records found\n"
-msgstr "ûÓÐÕÒµ½¼Í¼\n"
+msgstr "û���ҵ���¼\n"
#: log.c:1599 log.c:1712
#, c-format
msgid "End\n"
-msgstr "½áÊø\n"
+msgstr "����\n"
#: log.c:1613
#, c-format
msgid "Period covered by log files: %s-%s\n"
-msgstr "Æڼ䱻ÈÕÖ¾Îļþ¸²¸Ç: %s - %s\n"
+msgstr "�ڼ䱻��־�ļ�����: %s - %s\n"
#: log.c:1617
#, c-format
msgid "Failed to build the string representation of the date range\n"
-msgstr "½¨Á¢ÒÔ×Ö·û´®±íʾÈÕÆڵķ¶Î§Ê±Ê§°Ü\n"
+msgstr "������ַ�����ʾ���ڵķ�Χʱʧ��\n"
#: log.c:1622
#, c-format
#: log.c:1623
#, fuzzy, c-format
msgid "period=%s\n"
-msgstr "ÆÚ¼ä: %s\n"
+msgstr "�ڼ�: %s\n"
#: log.c:1627
#, c-format
msgid "Period: %s\n"
-msgstr "ÆÚ¼ä: %s\n"
+msgstr "�ڼ�: %s\n"
#: log.c:1644
#, fuzzy, c-format
msgid "File name too long: %s/sarg-%s_%s-%s_%s.log\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
+msgstr "�ļ�������: %s/%s%s\n"
#: log.c:1648
#, c-format
msgid "failed to rename %s to %s - %s\n"
-msgstr "ÖØÃüÃûʧ°Ü %s ÖÁ %s - %s\n"
+msgstr "������ʧ�� %s �� %s - %s\n"
#: log.c:1658
#, fuzzy, c-format
msgid "Command too long: %s \"%s\"\n"
-msgstr "·¾¶¹ý³¤ %s/%s.ip\n"
+msgstr "·������ %s/%s.ip\n"
#: log.c:1670
#, c-format
msgid "Sarg parsed log saved as %s\n"
-msgstr "Sarg½âÎöÈÕÖ¾Áí´æΪ %s\n"
+msgstr "Sarg������־����Ϊ %s\n"
#: log.c:1726
#, c-format
msgid "Loading password file from %s\n"
-msgstr "¼ÓÔØÃÜÂë´ÓÎļþ %s\n"
+msgstr "�����������ļ� %s\n"
#: log.c:1729
#, c-format
msgid "(getusers) Cannot open file %s - %s\n"
-msgstr "(getusers) ²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+msgstr "(getusers) ���ܴ����ļ� %s - %s\n"
#: log.c:1734
#, c-format
msgid "Failed to move till the end of the users file %s: %s\n"
-msgstr "Òƶ¯Óû§ÎļþÖÁĩβʱʧ°Ü%s: %s\n"
+msgstr "�ƶ��û��ļ���ĩβʱʧ��%s: %s\n"
#: log.c:1744
#, c-format
msgid "Failed to rewind the users file %s: %s\n"
-msgstr "ת´æÓû§Îļþʱʧ°Ü %s: %s\n"
+msgstr "ת���û��ļ�ʱʧ�� %s: %s\n"
#: log.c:1749 util.c:1424
#, c-format
msgid "malloc error (%ld)\n"
-msgstr "ÄÚ´æ·ÖÒ³´íÎó (%ld)\n"
+msgstr "�ڴ���ҳ���� (%ld)\n"
#: log.c:1759
#, c-format
msgid "You have an invalid user in your %s file\n"
-msgstr "ÓÐÒ»¸ö²»´æÔÚµÄÓû§ÔÚÄãµÄ %s Îļþ\n"
+msgstr "��һ����ڵ��û������� %s �ļ�\n"
#: longline.c:136
#, c-format
+<<<<<<< HEAD
+msgid "Not enough memory to read one more line from the input log file\n"
+msgstr "û���㹻���ڴ��ٶ�ȡ������־�ļ�\n"
+=======
msgid "A text line is more than %d bytes long denoting a corrupted file\n"
msgstr ""
#: longline.c:141 longline.c:154
#, fuzzy, c-format
msgid "Not enough memory to read one more line from the file\n"
--msgstr "ûÓÐ×ã¹»µÄÄÚ´æÔÙ¶ÁÈ¡ÊäÈëÈÕÖ¾Îļþ\n"
++msgstr "û���㹻���ڴ��ٶ�ȡ������־�ļ�\n"
+>>>>>>> origin/v2.3
#: realtime.c:56 realtime.c:63
#, fuzzy, c-format
msgid "Cannot create a temporary file name to produce the report: %s\n"
-msgstr "ÎÞ·¨É¾³ýÁÙʱÎļþ %s - %s\n"
+msgstr "��ɾ����ʱ�ļ� %s - %s\n"
#: realtime.c:71
#, c-format
msgid "(realtime) mkstemp error - %s\n"
-msgstr "(realtime)mkstemp ´íÎó - %s\n"
+msgstr "(realtime)mkstemp ���� - %s\n"
#: realtime.c:76 realtime.c:224
#, c-format
msgid "Not enough memory to read the log file\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡ÈÕÖ¾Îļþ\n"
+msgstr "û���㹻���ڴ����ȡ��־�ļ�\n"
#: realtime.c:83
#, fuzzy, c-format
msgid "Failed to get the %d trailing lines of %s: %s\n"
-msgstr "»ñÈ¡Îļþ´´½¨Ê±¼äʱʧ°Ü %s\n"
+msgstr "��ȡ�ļ�����ʱ��ʱʧ�� %s\n"
#: realtime.c:84
#, fuzzy, c-format
msgid "tail command: %s\n"
-msgstr "ÃüÁî: %s\n"
+msgstr "����: %s\n"
#: realtime.c:89
#, c-format
msgid "Maybe a broken record or garbage was returned by %s\n"
-msgstr "¿ÉÄÜÓв»ÍêÕûµÄ¼Í¼»òÕßÀ¬»ø·µ»Ø´Ó %s\n"
+msgstr "�����в������ļ�¼����������ش� %s\n"
#: realtime.c:126
#, c-format
msgid "The time stamp at column 1 is too long\n"
-msgstr "ʱ¼ä´ÁÔÚÁÐ1Ì«³¤\n"
+msgstr "ʱ��������1̫��\n"
#: realtime.c:130
#, fuzzy, c-format
msgid "The time stamp decimal part at column 1 is too long\n"
-msgstr "ʱ¼ä´ÁÔÚÁÐ1Ì«³¤\n"
+msgstr "ʱ��������1̫��\n"
#: realtime.c:134
#, c-format
msgid "The connection duration at column 2 is too long\n"
-msgstr "Á¬½Ó³ÖÐøʱ¼äÔÚÁÐ2¹ý³¤\n"
+msgstr "��ӳ���ʱ������2����\n"
#: realtime.c:142
#, c-format
msgid "The IP address at column 3 is too long\n"
-msgstr "ÔÚÁÐ3µÄIPµØÖ·¹ý³¤\n"
+msgstr "����3��IP��ַ����\n"
#: realtime.c:146
#, c-format
msgid "The status at column 4 is too long\n"
-msgstr "ÔÚÁÐ4µÄ״̬̫³¤\n"
+msgstr "����4��״̬̫��\n"
#: realtime.c:150
#, c-format
msgid "The size at column 5 is too long\n"
-msgstr "ÁÐ5µÄ´óС¹ý³¤\n"
+msgstr "��5�Ĵ�С����\n"
#: realtime.c:154
#, c-format
msgid "The action at column 6 is too long\n"
-msgstr "ÁÐ6µÄ×÷Óùý³¤\n"
+msgstr "��6�����ù���\n"
#: realtime.c:159 realtime.c:168 realtime.c:172 realtime.c:176
#, c-format
msgid "The URL at column 7 is too long\n"
-msgstr "ÁÐ7µÄÁ¬½Ó¹ý³¤\n"
+msgstr "��7����ӹ���\n"
#: realtime.c:163
#, c-format
msgid "The user ID at column 8 is too long\n"
-msgstr "ÁÐ8µÄÓû§ID¹ý³¤\n"
+msgstr "��8���û�ID����\n"
#: realtime.c:180
#, c-format
msgid "The data at column 8 is too long\n"
-msgstr "ÁÐ8µÄÊý¾Ý¹ý³¤\n"
+msgstr "��8�����ݹ���\n"
#: realtime.c:184
#, c-format
msgid "The user at column 9 is too long\n"
-msgstr "ÁÐ9µÄÓû§¹ý³¤\n"
+msgstr "��9���û�����\n"
#: realtime.c:217
#, c-format
msgid "(realtime) open error %s - %s\n"
-msgstr "(realtime)´ò¿ª´íÎó %s - %s\n"
+msgstr "(realtime)���� %s - %s\n"
#: realtime.c:232
#, fuzzy, c-format
msgid "Invalid time column in file %s\n"
-msgstr "ÎÞЧµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "��Ч��ʱ�����ļ��� %s\n"
#: realtime.c:236 redirector.c:495
#, fuzzy, c-format
msgid "Invalid IP address in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: realtime.c:240
#, fuzzy, c-format
msgid "Invalid user name in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧÊäÈë %s\n"
+msgstr "���ļ��д�����Ч���� %s\n"
#: realtime.c:245 redirector.c:161 redirector.c:499
#, fuzzy, c-format
msgid "Invalid URL in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: realtime.c:249
#, fuzzy, c-format
msgid "Invalid access type in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: realtime.c:312
msgid "Realtime"
#: realtime.c:313
msgid "Auto refresh"
-msgstr "×Ô¶¯Ë¢ÐÂ"
+msgstr "�Զ�ˢ��"
#: realtime.c:314
msgid "TYPE"
-msgstr "ÀàÐÍ"
+msgstr "����"
#: redirector.c:58
#, c-format
#: redirector.c:81
#, fuzzy, c-format
msgid "Parsing of tag \"%s\" in redirector log %s returned no result\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐÄê·Ý×Ö·û´®Ì«³¤ %s\n"
+msgstr "���ض�����־�ļ��������ַ���̫�� %s\n"
#: redirector.c:93
#, c-format
msgid "Hour string too long in redirector log file %s\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐСʱ×Ö·û´®Ì«³¤ %s\n"
+msgstr "���ض�����־�ļ���Сʱ�ַ���̫�� %s\n"
#: redirector.c:100
#, fuzzy, c-format
msgid "Banning source name too long in redirector log file %s\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐ×èÖ¹ÁбíÃû¹ý³¤ %s\n"
+msgstr "���ض�����־�ļ�����ֹ�б������� %s\n"
#: redirector.c:107
#, c-format
msgid "Banning list name too long in redirector log file %s\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐ×èÖ¹ÁбíÃû¹ý³¤ %s\n"
+msgstr "���ض�����־�ļ�����ֹ�б������� %s\n"
#: redirector.c:114
#, c-format
msgid "IP address too long in redirector log file %s\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐIPµØÖ·¹ý³¤ %s\n"
+msgstr "���ض�����־�ļ���IP��ַ���� %s\n"
#: redirector.c:121
#, c-format
msgid "User ID too long in redirector log file %s\n"
-msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐÓû§Ãû¹ý³¤ %s\n"
+msgstr "���ض�����־�ļ����û������� %s\n"
#: redirector.c:138 splitlog.c:95
#, fuzzy, c-format
msgid "Invalid date found in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: redirector.c:146
#, fuzzy, c-format
msgid "Invalid time found in file %s\n"
-msgstr "ÎÞЧµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "��Ч��ʱ�����ļ��� %s\n"
#: redirector.c:151
#, fuzzy, c-format
msgid "Invalid redirected source in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: redirector.c:156
#, fuzzy, c-format
msgid "Invalid redirected list in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: redirector.c:166
#, fuzzy, c-format
msgid "Invalid source IP in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: redirector.c:171 redirector.c:483
#, fuzzy, c-format
msgid "Invalid user in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧÊäÈë %s\n"
+msgstr "���ļ��д�����Ч���� %s\n"
#: redirector.c:228
#, c-format
msgid "Reading redirector log file %s\n"
-msgstr "¶ÁÈ¡Öض¨ÏòÈÕÖ¾Îļþ %s\n"
+msgstr "��ȡ�ض�����־�ļ� %s\n"
#: redirector.c:255 redirector.c:260
#, c-format
msgid ""
"Not enough memory to store the name of the new redirector log to be read - "
"%s\n"
-msgstr "¶ÁȡеÄÖض¨ÏòÈÕÖ¾ÎļþÃûʱûÓеÄ×ã¹»µÄÄÚ´æ - %s\n"
+msgstr "��ȡ�µ��ض�����־�ļ���ʱû�е��㹻���ڴ� - %s\n"
#: redirector.c:265 redirector.c:309 redirector.c:326 redirector.c:456
#: redirector.c:461
#, c-format
msgid "(squidguard) Cannot open log file %s\n"
-msgstr "(squidguard) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(squidguard) ���ܴ�����־�ļ� %s\n"
#: redirector.c:270
#, fuzzy, c-format
msgid "Not enough memory to read the redirector log\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥¶ÁÈ¡Îļþ %s\n"
+msgstr "û���㹻���ڴ�ȥ��ȡ�ļ� %s\n"
#: redirector.c:302
msgid "No redirector logs provided to produce that kind of report\n"
#: redirector.c:321
#, c-format
msgid "Cannot open squidGuard config file: %s\n"
-msgstr "²»ÄÜ´ò¿ªsauidGuard ÅäÖÃÎļþ: %s\n"
+msgstr "���ܴ���sauidGuard �����ļ�: %s\n"
#: redirector.c:412
#, c-format
#: redirector.c:466
#, fuzzy, c-format
msgid "Not enough memory to read the processed redirector log\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡ÈÕÖ¾Îļþ\n"
+msgstr "û���㹻���ڴ����ȡ��־�ļ�\n"
#: redirector.c:470 redirector.c:474
msgid "Redirector report"
-msgstr "Öض¨Ïò±¨¸æ"
+msgstr "�ض���"
#: redirector.c:478
msgid "RULE"
-msgstr "¹æÔò"
+msgstr "����"
#: redirector.c:491 repday.c:97
#, c-format
msgid "Invalid time in file %s\n"
-msgstr "ÎÞЧµÄʱ¼äÔÚÎļþÖÐ %s\n"
+msgstr "��Ч��ʱ�����ļ��� %s\n"
#: redirector.c:503
#, fuzzy, c-format
msgid "Invalid rule in file %s\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: redirector.c:569
#, c-format
#: repday.c:64
#, c-format
msgid "Output file name too long: %s/%s/d%s.html\n"
-msgstr "Êä³öÎļþÃû¹ý³¤ %s/%s/d%s.html\n"
+msgstr "�����ļ������� %s/%s/d%s.html\n"
#: repday.c:69 repday.c:122
#, c-format
msgid "(repday) Cannot open log file %s\n"
-msgstr "(repday) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(repday) ���ܴ����ļ� %s\n"
#: repday.c:90
#, c-format
msgid "Too many different dates in %s\n"
-msgstr "²»Í¬µÄÈÕÆÚÔÚ %s\n"
+msgstr "��ͬ�������� %s\n"
#: repday.c:126
msgid "Day report"
-msgstr "ÈÕ±¨"
+msgstr "�ձ�"
- #: repday.c:144 repday.c:194
- msgid "H"
- msgstr "H"
+ #. TRANSLATORS: It is an hour in the hourly report
+ #: repday.c:145 repday.c:197
+ #, c-format
+ msgid "%02dH"
+ msgstr ""
- #: repday.c:182
+ #: repday.c:185
#, c-format
msgid ""
"Total downloaded bytes is %<PRIi64> instead of %<PRIi64> in the hourly "
"report of user %s\n"
msgstr ""
- #: repday.c:190
+ #: repday.c:193
msgid "H:M:S"
msgstr "H:M:S"
- #: repday.c:232
+ #: repday.c:237
#, c-format
msgid ""
"Total elapsed time is %<PRIi64> instead of %<PRIi64> in the hourly report of "
msgid ""
"Cannot create the output directory name containing the period as part of the "
"name\n"
-msgstr "²»ÄÜ´´½¨Êä³öÎļþ¼ÐÃû°üº¬ÆÚ¼äµÄ²¿·ÖÃû³Æ\n"
+msgstr "���ܴ��������ļ����������ڼ��IJ�������\n"
#: report.c:93
#, c-format
#: report.c:752
#, c-format
msgid "(report) Cannot open file %s\n"
-msgstr "(report) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(report) ���ܴ����ļ� %s\n"
#: report.c:120
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "(report) directory entry too long: %s/%s.log\n"
+msgstr "(report) �ļ��й��� %s/%s\n"
+=======
msgid "(report) directory entry too long: %s/%s.user_log\n"
--msgstr "(report) Îļþ¼Ð¹ý³¤ %s/%s\n"
++msgstr "(report) �ļ��й��� %s/%s\n"
+>>>>>>> origin/v2.3
#: report.c:175
#, c-format
msgid "There is a broken smart info in file %s\n"
-msgstr "Óв»ÍêÕûµÄÖÇÄÜÐÅÏ¢ÔÚÎļþ %s\n"
+msgstr "�в�������������Ϣ���ļ� %s\n"
#: report.c:257
msgid "Site access report"
-msgstr "վµã·ÃÎʱ¨¸æ"
+msgstr "վ�����ʱ���"
#: report.c:267
#, fuzzy
msgid "DATE"
-msgstr "ÈÕÆÚ/ʱ¼ä"
+msgstr "����/ʱ��"
#: report.c:331
#, fuzzy, c-format
msgid "Failed to close temporary file for user %s - %s\n"
-msgstr "¹Ø±ÕÓû§ÈÕÖ¾Îļþʧ°Ü %s - %s\n"
+msgstr "�ر��û���־�ļ�ʧ�� %s - %s\n"
#: report.c:350
msgid ""
#: report.c:398
#, c-format
msgid "Successful report generated on %s\n"
-msgstr "³É¹¦µÄÉú³É±¨¸æÔÚ %s\n"
+msgstr "�ɹ������ɱ����� %s\n"
#: report.c:403
#, c-format
msgid "Successful report generated and sent to %s\n"
-msgstr "³É¹¦µÄ±¨¸æÉú³É²¢·¢ËÍÖÁ %s\n"
+msgstr "�ɹ��ı������ɲ������� %s\n"
#: report.c:420
#, c-format
msgid "Making file: %s/%s\n"
-msgstr "Éú³ÉÎļþ: %s/%s\n"
+msgstr "�����ļ�: %s/%s\n"
#: report.c:422
#, c-format
msgid "Temporary file name too long: %s/%s.utmp\n"
-msgstr "ÁÙʱÎļþÃû¹ý³¤: %s/%s.utmp\n"
+msgstr "��ʱ�ļ�������: %s/%s.utmp\n"
#: report.c:463
#, c-format
msgid "Path too long %s/%s.ip\n"
-msgstr "·¾¶¹ý³¤ %s/%s.ip\n"
+msgstr "·������ %s/%s.ip\n"
#: report.c:491
#, fuzzy, c-format
msgid "Failed to write a line in %s\n"
-msgstr "дÈëµÚÒ»ÐÐʱʧ°Ü %s\n"
+msgstr "д����һ��ʱʧ�� %s\n"
#: report.c:513
#, c-format
msgid "Failed to write the total line in %s\n"
-msgstr "дÈëµÚÒ»ÐÐʱʧ°Ü %s\n"
+msgstr "д����һ��ʱʧ�� %s\n"
#: report.c:539
#, c-format
msgid "Invalid total number of accesses in %s\n"
-msgstr "²»´æÔڵķÃÎÊ×ÜÊýÔÚ %s\n"
+msgstr "�����ڵķ��������� %s\n"
#: report.c:556
#, c-format
msgid "Invalid total size in %s\n"
-msgstr "²»´æÔÚµÄ×Ü´óСÔÚ %s\n"
+msgstr "�����ڵ��ܴ�С�� %s\n"
#: report.c:573
#, c-format
msgid "Invalid total elapsed time in %s\n"
-msgstr "²»´æÔÚ×ܵĹýȥʱ¼äÔÚ %s\n"
+msgstr "�������ܵĹ�ȥʱ���� %s\n"
#: report.c:590
#, c-format
msgid "Invalid total cache hit in %s\n"
-msgstr "²»´æÔڵĻº´æÃüÖÐ×ÜÊý %s\n"
+msgstr "�����ڵĻ����������� %s\n"
#: report.c:607
#, c-format
msgid "Invalid total cache miss in %s\n"
-msgstr "²»´æÔڵĻº´æδÃüÖÐ×ÜÊý %s\n"
+msgstr "�����ڵĻ���δ�������� %s\n"
#: report.c:617
#, c-format
msgid "User name too long or invalid in %s\n"
-msgstr "Óû§Ãû¹ý³¤»òÕß²»´æÔÚ %s\n"
+msgstr "�û����������߲����� %s\n"
#: report.c:633
#, c-format
msgid "Invalid number of accesses in %s\n"
-msgstr "²»´æÔڵķÃÎÊÊý %s\n"
+msgstr "�����ڵķ����� %s\n"
#: report.c:650
#, c-format
msgid "Invalid number of bytes in %s\n"
-msgstr "²»´æÔÚ×Ö½ÚÊýz %s\n"
+msgstr "�������ֽ���z %s\n"
#: report.c:659
#, c-format
msgid "URL too long or invalid in %s\n"
-msgstr "Á¬½Ó¹ý³¤»ò²»´æÔÚ %s\n"
+msgstr "��ӹ������� %s\n"
#: report.c:667
#, c-format
msgid "IP address too long or invalid in %s\n"
-msgstr "IPµØÖ·¹ý³¤»ò²»´æÔÚ %s\n"
+msgstr "IP��ַ�������� %s\n"
#: report.c:675
#, c-format
msgid "Time too long or invalid in %s\n"
-msgstr "ʱ¼ä¹ý³¤»ò²»´æÔÚ %s\n"
+msgstr "ʱ���������� %s\n"
#: report.c:683
#, c-format
msgid "Date too long or invalid in %s\n"
-msgstr "ÈÕÆÚ¹ý³¤»ò²»´æÔÚz %s\n"
+msgstr "���ڹ�������z %s\n"
#: report.c:699
#, c-format
msgid "Invalid elapsed time in %s\n"
-msgstr "²»´æÔڵĵĹýȥʱ¼äÔÚ %s\n"
+msgstr "�����ڵĵĹ�ȥʱ���� %s\n"
#: report.c:716
#, c-format
msgid "Invalid cache hit size in %s\n"
-msgstr "²»´æÔڵĻº´æÃüÖдóСÔÚ %s\n"
+msgstr "�����ڵĻ������д�С�� %s\n"
#: report.c:733
#, c-format
msgid "Invalid cache miss size in %s\n"
-msgstr "²»´æÔÚ»º´æδÃüÖдóСÔÚ %s\n"
+msgstr "�����ڻ���δ���д�С�� %s\n"
#: report.c:747
#, fuzzy, c-format
msgid "File name too long for %s/smartfilter.int_unsort\n"
--msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
++msgstr "�ļ�������: %s/%s%s\n"
#: siteuser.c:52
msgid "Sites and users report not generated because privacy option is on\n"
#: siteuser.c:74 siteuser.c:80
#, c-format
msgid "(siteuser) Cannot open log file %s\n"
-msgstr "(siteuser) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(siteuser) ���ܴ�����־�ļ� %s\n"
#: siteuser.c:84 siteuser.c:88 topuser.c:236
msgid "Sites & Users"
-msgstr "վµã & Óû§"
+msgstr "վ�� & �û�"
#: smartfilter.c:57
#, fuzzy, c-format
msgid "File name too long: %s/smartfilter.int_unsort\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
+msgstr "�ļ�������: %s/%s%s\n"
#: smartfilter.c:61
#, fuzzy, c-format
msgid "File name too long: %s/sarg-sites\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
+msgstr "�ļ�������: %s/%s%s\n"
#: smartfilter.c:65
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "File name too long: %s/smartfilter.log\n"
+msgstr "�ļ�������: %s/%s.ip\n"
+=======
msgid "File name too long: %s/smartfilter.int_log\n"
--msgstr "ÎļþÃû¹ý³¤: %s/%s.ip\n"
++msgstr "�ļ�������: %s/%s.ip\n"
+>>>>>>> origin/v2.3
#: smartfilter.c:69
#, fuzzy, c-format
msgid "File name too long: %s/smartfilter.html\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s/denied_%s.html\n"
+msgstr "�ļ�������: %s/%s/denied_%s.html\n"
#: smartfilter.c:74
#, c-format
msgid "cannot build the sort command to sort file %s\n"
-msgstr "²»Äܹ¹½¨ÅÅÐòÃüÁîÀ´ÅÅÐòÎļþ %s\n"
+msgstr "���ܹ�����������������ļ� %s\n"
#: smartfilter.c:84 smartfilter.c:94
#, c-format
msgid "(smartfilter) Cannot open log file %s\n"
-msgstr "(smartfilter)²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(smartfilter)���ܴ�����־�ļ� %s\n"
#: smartfilter.c:109 topuser.c:242
msgid "SmartFilter"
--msgstr "ÖÇÄܹýÂË"
++msgstr "���ܹ���"
#: smartfilter.c:116 smartfilter.c:183
msgid "SMARTFILTER"
#: smartfilter.c:140 smartfilter.c:194 smartfilter.c:204 util.c:1617
msgid "Generated by"
-msgstr "ÓÉ Éú³É"
+msgstr "�� ����"
#: smartfilter.c:140 smartfilter.c:194 smartfilter.c:204 util.c:1617
msgid "on"
#: smartfilter.c:146
#, c-format
msgid "(smartfilter) Cannot open file %s\n"
-msgstr "(smartfilter) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(smartfilter) ���ܴ����ļ� %s\n"
#: sort.c:66
#, fuzzy, c-format
+<<<<<<< HEAD
+msgid "file name too long: %s/%s.utmp\n"
+msgstr "�ļ�������: %s/%s.ip\n"
+
+#: sort.c:70
+#, fuzzy, c-format
+msgid "file name too long: %s/htmlrel.txt\n"
+msgstr "���������ƹ���: %s/%s\n"
+
+#: sort.c:118
+#, fuzzy, c-format
+msgid "Sorting log %s/%s.unsort\n"
+msgstr "�û������� %s/%s.unsort\n"
+=======
msgid "File name too long: %s/%s.utmp\n"
--msgstr "ÎļþÃû¹ý³¤: %s/%s.ip\n"
++msgstr "�ļ�������: %s/%s.ip\n"
#: sort.c:70
#, fuzzy, c-format
msgid "File name too long: %s/htmlrel.txt\n"
--msgstr "ÊäÈëµÄÃû³Æ¹ý³¤: %s/%s\n"
++msgstr "���������ƹ���: %s/%s\n"
#: sort.c:118
#, fuzzy, c-format
msgid "Sorting log %s/%s.user_unsort\n"
--msgstr "Óû§Ãû¹ý³¤ %s/%s.unsort\n"
++msgstr "�û������� %s/%s.unsort\n"
+>>>>>>> origin/v2.3
#: sort.c:125
#, c-format
msgid "user name too long to sort %s\n"
-msgstr "Óû§Ãû¹ý³¤ÎÞ·¨ÅÅÐò %s\n"
+msgstr "�û������������� %s\n"
#: sort.c:135
+<<<<<<< HEAD
+#, c-format
+msgid "user name too long for %s/%s.unsort\n"
+msgstr "�û������� %s/%s.unsort\n"
+=======
#, fuzzy, c-format
msgid "user name too long for %s/%s.user_unsort\n"
--msgstr "Óû§Ãû¹ý³¤ %s/%s.unsort\n"
++msgstr "�û������� %s/%s.unsort\n"
+>>>>>>> origin/v2.3
#: sort.c:156 topuser.c:171
msgid "connect"
#: sort.c:158
#, fuzzy
msgid "site"
-msgstr "ÈÈÃÅÕ¾µã"
+msgstr "����վ��"
#: sort.c:160 topuser.c:174
#, fuzzy
#: splitlog.c:82
#, fuzzy, c-format
msgid "(splitlog) Cannot open log file %s - %s\n"
-msgstr "(splitlog) ÎÞ·¨´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(splitlog) ��������־�ļ� %s\n"
#: splitlog.c:122
#, fuzzy, c-format
msgid "(splitlog) Cannot open output log file %s - %s\n"
-msgstr "(splitlog) ÎÞ·¨´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(splitlog) ��������־�ļ� %s\n"
#: topsites.c:72
msgid "Top sites report not produced because privacy option is on\n"
#: topsites.c:95 topsites.c:101 topsites.c:217 topsites.c:228
#, c-format
msgid "(topsites) Cannot open log file %s\n"
-msgstr "(topsites) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(topsites) ���ܴ�����־�ļ� %s\n"
#: topsites.c:179
#, c-format
#: topsites.c:232 topuser.c:235
msgid "Top sites"
-msgstr "ÈÈÃÅÕ¾µã"
+msgstr "����վ��"
#: topsites.c:237
#, c-format
msgid "Top %d sites"
-msgstr "ÈÈÃÅ %d Õ¾µã"
+msgstr "���� %d վ��"
#: topsites.c:280
#, fuzzy, c-format
msgid "The number of users is invalid in file %s\n"
--msgstr "Õâ¸öÁ¬½Ó²»´æÔÚÔÚÎļþ %s\n"
++msgstr "������Ӳ��������ļ� %s\n"
#: topsites.c:284
#, c-format
msgid "The url is invalid in file %s\n"
-msgstr "Õâ¸öÁ¬½Ó²»´æÔÚÔÚÎļþ %s\n"
+msgstr "������Ӳ��������ļ� %s\n"
#: topuser.c:45 topuser.c:87 topuser.c:93 topuser.c:200 topuser.c:211
#, c-format
msgid "(topuser) Cannot open file %s\n"
-msgstr "(topuser) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(topuser) ���ܴ����ļ� %s\n"
#: topuser.c:101 util.c:748
#, c-format
msgid "Not enough memory to read the file %s\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥¶ÁÈ¡Îļþ %s\n"
+msgstr "û���㹻���ڴ�ȥ��ȡ�ļ� %s\n"
#: topuser.c:159
#, c-format
#: topuser.c:168
#, fuzzy
msgid "user"
-msgstr "Óû§"
+msgstr "�û�"
#: topuser.c:215
#, c-format
msgid "SARG report for %s"
-msgstr "SARG ±¨¸æ %s"
+msgstr "SARG ���� %s"
#: topuser.c:222
#, c-format
#: topuser.c:224
msgid "Top users"
-msgstr "ÈÈÃÅÓû§"
+msgstr "�����û�"
#. TRANSLATORS: This is the title of the main report page when no
#. * top users list are requested.
#: topuser.c:238
msgid "Redirector"
-msgstr "Öض¨Ïò"
+msgstr "�ض���"
#: topuser.c:240
msgid "Denied accesses"
-msgstr "×èÖ¹·ÃÎÊ"
+msgstr "��ֹ����"
#: topuser.c:243
msgid "Useragent"
-msgstr "Óû§´úÀí"
+msgstr "�û�����"
#: topuser.c:250
msgid "No top users report because it is not configured in report_type\n"
#: topuser.c:300
#, c-format
msgid "There is a broken user in file %s\n"
-msgstr "Óв»ÍêÕûµÄÓû§ÔÚÎļþ %s\n"
+msgstr "�в��������û����ļ� %s\n"
#: topuser.c:312
#, c-format
msgid "There is a broken elpased time in file %s\n"
-msgstr "Óв»ÍêÕûµÄ¹ýȥʱ¼äÔÚÎļþ %s\n"
+msgstr "�в������Ĺ�ȥʱ�����ļ� %s\n"
#: topuser.c:316
#, c-format
msgid "There is a broken in-cache size in file %s\n"
-msgstr "Óв»ÍêÕûµÄ in-cache ´óСÔÚÎļþ %s\n"
+msgstr "�в������� in-cache ��С���ļ� %s\n"
#: topuser.c:320
#, c-format
msgid "There is a broken out-of-cache size in file %s\n"
-msgstr "Óв»ÍêÕûµÄ out-of-cache ´óСÔÚÎļþ %s\n"
+msgstr "�в������� out-of-cache ��С���ļ� %s\n"
#: topuser.c:352
msgid "Graphic"
-msgstr "ÊÓͼ"
+msgstr "��ͼ"
#: topuser.c:390
#, c-format
#: topuser.c:481
#, c-format
msgid "Write error in top user list %s\n"
-msgstr "дÈë´íÎóÔÚÈÈÃÅÓû§Áбí %s\n"
+msgstr "д�������������û��б� %s\n"
#: topuser.c:483
#, c-format
msgid "Failed to close the top user list %s - %s\n"
-msgstr "¹Ø±Õ»îÔ¾Óû§Áбíʱʧ°Ü %s - %s\n"
+msgstr "�رջ�Ծ�û��б�ʱʧ�� %s - %s\n"
#: totday.c:53
#, fuzzy, c-format
msgid "Not enough memory to store the daily statistics\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥´æ´¢Á¬½Ó\n"
+msgstr "û���㹻���ڴ�ȥ�洢���\n"
#: totday.c:104
#, c-format
#: totday.c:121
#, fuzzy, c-format
msgid "Too many different dates for the hourly statistics\n"
-msgstr "²»Í¬µÄÈÕÆÚÔÚ %s\n"
+msgstr "��ͬ�������� %s\n"
#: totday.c:153
#, c-format
msgid "File name too long: %s/%s%s\n"
-msgstr "ÎļþÃû¹ý³¤: %s/%s%s\n"
+msgstr "�ļ�������: %s/%s%s\n"
#: totday.c:158
#, c-format
msgid "(totday) Cannot open log file %s\n"
-msgstr "(today) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+msgstr "(today) ���ܴ�����־�ļ� %s\n"
#: totday.c:166
#, fuzzy, c-format
msgid "Invalid day index found in the hourly statistics\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: url.c:152
#, c-format
#: url.c:341 url.c:404 url.c:413 url.c:423 url.c:487 url.c:500
#, fuzzy, c-format
msgid "Not enough memory to store the host name aliasing directives\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢ÎļþÃûÔÚ \"%s\" ÔÚË÷ÒýÖÐ\n"
+msgstr "û���㹻���ڴ���洢�ļ����� \"%s\" ��������\n"
#: url.c:467
#, fuzzy, c-format
msgid "Invalid NUL character found in regular expression\n"
-msgstr "ÔÚÎļþÖдæÔÚÎÞЧµÄÈÕÆÚ %s\n"
+msgstr "���ļ��д�����Ч������ %s\n"
#: url.c:474
#, c-format
#: url.c:493
#, fuzzy, c-format
msgid "Failed to compile the regular expression \"%s\": %s\n"
-msgstr "ת´æÓû§Îļþʱʧ°Ü %s: %s\n"
+msgstr "ת���û��ļ�ʱʧ�� %s: %s\n"
#: url.c:551
#, c-format
#: url.c:582
#, fuzzy, c-format
msgid "Reading host alias file \"%s\"\n"
-msgstr "¶ÁÈ¡·ÃÎÊÈÕÖ¾Îļþ: %s\n"
+msgstr "��ȡ������־�ļ�: %s\n"
#: url.c:585
#, fuzzy, c-format
msgid "Cannot read host name alias file \"%s\" - %s\n"
-msgstr "ÎÞ·¨É¾³ýÁÙʱÎļþ %s - %s\n"
+msgstr "��ɾ����ʱ�ļ� %s - %s\n"
#: url.c:590
#, fuzzy, c-format
msgid "Not enough memory to read the host name aliases\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´¶ÁÈ¡ÏÂÔØÎļþ\n"
+msgstr "û���㹻���ڴ����ȡ�����ļ�\n"
#: url.c:609
#, c-format
#: url.c:614
#, fuzzy, c-format
msgid " %s => %s\n"
-msgstr "´´½¨Ŀ¼ %s %s\n"
+msgstr "����Ŀ¼ %s %s\n"
#: url.c:616
#, c-format
#: usage.c:32
#, c-format
msgid "Usage: %s [options...]\n"
-msgstr "ʹÓÃ: %s [Ñ¡Ïî...]\n"
+msgstr "ʹ��: %s [ѡ��...]\n"
#: usage.c:33
#, fuzzy
- msgid " -a NAME|IP Create report for host name or IP address"
- msgstr " -a Ö÷»úÃû»òÕßIPµØÖ·"
+<<<<<<< HEAD
+msgid " -a NAME|IP Create report for host name or IP address"
+msgstr " -a ����������IP��ַ"
+=======
-msgstr " -a Ö÷»úÃû»òÕßIPµØÖ·"
+ msgid " -a NAME|IP Create report for host name or IP address"
++msgstr " -a ����������IP��ַ"
+>>>>>>> origin/v2.3
#: usage.c:35
msgid " -c FILE Exclude connected hosts from the report"
#: usage.c:36
#, fuzzy
+<<<<<<< HEAD
+msgid " --convert Convert the access.log file to a legible date"
+msgstr " -convert ת�� access.log �ļ���һ����������"
+=======
msgid " --convert Convert the access.log file to a legible date"
--msgstr " -convert ת»» access.log Îļþµ½Ò»¸öÒ׶®µÄÈÕÆÚ"
++msgstr " -convert ת�� access.log �ļ���һ����������"
+>>>>>>> origin/v2.3
#: usage.c:37
msgid " --css Output the internal CSS"
#: usage.c:38
#, fuzzy
msgid ""
+<<<<<<< HEAD
+" -d DATE Date range to include in the report: from-until dd/mm/yyyy-"
+"dd/mm/yyyy"
+msgstr " -d ���ڴӣ��� dd/mm/yyyy-dd/mm/yyyy"
+
+#: usage.c:39
+#, fuzzy
+msgid " -e MAIL Email address to send reports to (stdout for console)"
+msgstr " -e �ʼ���ַ���ͱ��� (stdout for console)"
+
+#: usage.c:40
+#, fuzzy, c-format
+msgid " -f FILE Config file to read (default is %s/sarg.conf)\n"
+msgstr " -f �����ļ� (%s/sarg.conf)\n"
+=======
" -d DATE Date range to include in the report: from-until dd/mm/"
"yyyy-dd/mm/yyyy"
--msgstr " -d ÈÕÆÚ´Ó£µ½ dd/mm/yyyy-dd/mm/yyyy"
++msgstr " -d ���ڴӣ��� dd/mm/yyyy-dd/mm/yyyy"
#: usage.c:39
#, fuzzy
msgid ""
" -e MAIL Email address to send reports to (stdout for console)"
--msgstr " -e ÓʼþµØÖ··¢Ëͱ¨¸æ (stdout for console)"
++msgstr " -e �ʼ���ַ���ͱ��� (stdout for console)"
#: usage.c:40
#, fuzzy, c-format
msgid " -f FILE Config file to read (default is %s/sarg.conf)\n"
--msgstr " -f ÅäÖÃÎļþ (%s/sarg.conf)\n"
++msgstr " -f �����ļ� (%s/sarg.conf)\n"
+>>>>>>> origin/v2.3
#: usage.c:41
#, fuzzy
msgid ""
+<<<<<<< HEAD
+" -g FMT Date format [e=Europe -> dd/mm/yyyy, u=USA -> mm/dd/yyyy]"
+msgstr " -g ���ڸ�ʽ [e=ŷ�� -> dd/mm/yyyy, u=��� ->mm/dd/yyyy]"
+
+#: usage.c:42
+#, fuzzy
+msgid " -h This help"
+msgstr " -h �����ǰ���"
+
+#: usage.c:43
+#, fuzzy
+msgid " --help This help"
+msgstr " -h �����ǰ���"
+
+#: usage.c:44
+#, fuzzy
+msgid " -i Reports by user and IP address"
+msgstr " -i �û�������IP��ַ"
+=======
" -g FMT Date format [e=Europe -> dd/mm/yyyy, u=USA -> mm/dd/yyyy]"
--msgstr " -g ÈÕÆÚ¸ñʽ [e=Å·ÖÞ -> dd/mm/yyyy, u=ÃÀ¹ú ->mm/dd/yyyy]"
++msgstr " -g ���ڸ�ʽ [e=ŷ�� -> dd/mm/yyyy, u=��� ->mm/dd/yyyy]"
#: usage.c:42
#, fuzzy
msgid " -h This help"
--msgstr " -h ÕâÀïÊÇ°ïÖú"
++msgstr " -h �����ǰ���"
#: usage.c:43
#, fuzzy
msgid " --help This help"
--msgstr " -h ÕâÀïÊÇ°ïÖú"
++msgstr " -h �����ǰ���"
#: usage.c:44
#, fuzzy
msgid " -i Reports by user and IP address"
--msgstr " -i Óû§±¨¸æºÍIPµØÖ·"
++msgstr " -i �û�������IP��ַ"
+>>>>>>> origin/v2.3
#: usage.c:45
msgid " --keeplogs Keep every previously generated report"
#: usage.c:46
#, fuzzy
+<<<<<<< HEAD
+msgid " -l FILE Input log"
+msgstr " -l ������־"
+=======
msgid " -l FILE Input log"
--msgstr " -l ÊäÈëÈÕÖ¾"
++msgstr " -l ������־"
+>>>>>>> origin/v2.3
#: usage.c:47
msgid " --lastlog Set the number of previous reports to keep"
#: usage.c:48
#, fuzzy
+<<<<<<< HEAD
+msgid " -m Advanced process messages"
+msgstr " ������Ϣ (-z) = %s\n"
+
+#: usage.c:49
+#, fuzzy
+msgid " -n Resolve IP addresses using RDNS"
+msgstr " ת��IP��ַ (-n) = %s\n"
+=======
msgid " -m Advanced process messages"
--msgstr " ½ø³ÌÐÅϢ (-z) = %s\n"
++msgstr " ������Ϣ (-z) = %s\n"
#: usage.c:49
#, fuzzy
msgid " -n Resolve IP addresses using RDNS"
--msgstr " ת»»IPµØÖ· (-n) = %s\n"
++msgstr " ת��IP��ַ (-n) = %s\n"
+>>>>>>> origin/v2.3
#: usage.c:50
#, fuzzy
msgid " -o DIR Report output directory"
--msgstr " -w ÁÙʱĿ¼"
++msgstr " -w ��ʱĿ¼"
#: usage.c:51
#, fuzzy
+<<<<<<< HEAD
+msgid " -p Use Ip Address instead of userid (reports)"
+msgstr " -p ʹ��IP��ַ�����û�ID (reports)"
+=======
msgid " -p Use Ip Address instead of userid (reports)"
--msgstr " -p ʹÓÃIPµØÖ·Ìæ´úÓû§ID (reports)"
++msgstr " -p ʹ��IP��ַ�����û�ID (reports)"
+>>>>>>> origin/v2.3
#: usage.c:52
msgid " -P PREFIX Prepend a prefix to the splitted file names"
#: usage.c:53
#, fuzzy
+<<<<<<< HEAD
+msgid " -s SITE Limit report to accessed site [eg. www.microsoft.com]"
+msgstr " -s ����վ�� [���� www.microsoft.com, www.netscape.com]"
+
+#: usage.c:54
+#, fuzzy
+msgid " --split Split the log file by date in -d parameter"
+msgstr " -split ʹ�����ڷ�����־�ļ� -d ����"
+=======
msgid ""
" -s SITE Limit report to accessed site [eg. www.microsoft.com]"
--msgstr " -s ·ÃÎÊÕ¾µã [ÀýÈç www.microsoft.com, www.netscape.com]"
++msgstr " -s ����վ�� [���� www.microsoft.com, www.netscape.com]"
#: usage.c:54
#, fuzzy
msgid " --split Split the log file by date in -d parameter"
--msgstr " -split ʹÓÃÈÕÆÚ·ÖÀëÈÕÖ¾Îļþ -d ²ÎÊý"
++msgstr " -split ʹ�����ڷ�����־�ļ� -d ����"
+>>>>>>> origin/v2.3
#: usage.c:55
msgid ""
#: usage.c:58
#, fuzzy
+<<<<<<< HEAD
+msgid " -w DIR Temporary directory"
+msgstr " -w ��ʱĿ¼"
+
+#: usage.c:59
+#, fuzzy
+msgid " -x Debug messages"
+msgstr " -x ������Ϣ"
+
+#: usage.c:60
+#, fuzzy
+msgid " -z Process messages"
+msgstr " -z ������Ϣ"
+
+#: usage.c:63
+msgid ""
+"\n"
+"\tPlease donate to the sarg project:"
+msgstr ""
+"\n"
+"\t������Sarg��Ŀ:"
+=======
msgid " -u USER Report only that user's activity"
--msgstr " -i Óû§±¨¸æºÍIPµØַ"
++msgstr " -i �û�������IP��ַ"
#: usage.c:59
#, fuzzy
msgid " -w DIR Temporary directory"
--msgstr " -w ÁÙʱĿ¼"
++msgstr " -w ��ʱĿ¼"
#: usage.c:60
#, fuzzy
msgid " -x Debug messages"
--msgstr " -x ²î´íÐÅϢ"
++msgstr " -x ������Ϣ"
#: usage.c:61
#, fuzzy
msgid " -z Process messages"
--msgstr " -z ½ø³ÌÐÅÏ¢"
++msgstr " -z ������Ϣ"
+>>>>>>> origin/v2.3
#: useragent.c:65 useragent.c:70 useragent.c:146 useragent.c:158
#: useragent.c:229 useragent.c:240 useragent.c:298
#, c-format
msgid "(useragent) Cannot open file %s\n"
-msgstr "(useragent) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(useragent) ���ܴ����ļ� %s\n"
#: useragent.c:75
#, c-format
msgid "Reading useragent log: %s\n"
-msgstr "¶ÁÈ¡Óû§´úÀíÈÕ־: %s\n"
+msgstr "��ȡ�û�������־: %s\n"
#: useragent.c:100
#, c-format
msgid "Maybe you have a broken useragent entry in your %s file\n"
-msgstr "¿ÉÄÜÄãÓв»ÍêÕûµÄÓû§´úÀíÔÚÄãµÄ %s Îļþ\n"
+msgstr "�������в��������û����������� %s �ļ�\n"
#: useragent.c:122
#, c-format
msgid " Records read: %ld\n"
-msgstr " ¼Í¼ ¶Áȡ: %ld\n"
+msgstr " ��¼ ��ȡ: %ld\n"
#: useragent.c:163
#, c-format
msgid "Making Useragent report\n"
-msgstr "±ê¼ÇµÄÓû§´úÀí±¨¸æ\n"
+msgstr "���ǵ��û�������\n"
#: useragent.c:165 useragent.c:166
msgid "Squid Useragent's Report"
-msgstr "SquidÓû§´úÀíµÄ±¨¸æ"
+msgstr "Squid�û������ı���"
#: useragent.c:175 useragent.c:311
msgid "AGENT"
-msgstr "´úÀí"
+msgstr "����"
#: useragent.c:180 useragent.c:250
#, c-format
msgid "There is an invalid IP address in file %s\n"
-msgstr "ÓÐÒ»¸öÎÞЧµÄIPµØÖ·ÔÚÎļþ %s\n"
+msgstr "��һ����Ч��IP��ַ���ļ� %s\n"
#: useragent.c:193 useragent.c:254 useragent.c:318
#, c-format
msgid "There is an invalid useragent in file %s\n"
-msgstr "ÓÐÒ»¸öÎÞЧµÄÓû§´úÀíÔÚÎļþ %s\n"
+msgstr "��һ����Ч���û��������ļ� %s\n"
#: userinfo.c:81
#, c-format
msgid "Not enough memory to store the user\n"
-msgstr "ûÓÐ×ã¹»µÄÄÚ´æÀ´´æ´¢Óû§ \n"
+msgstr "û���㹻���ڴ���洢�û� \n"
#: usertab.c:64
#, c-format
msgid "(usertab) Cannot open file %s - %s\n"
-msgstr "(usertab) ²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+msgstr "(usertab) ���ܴ����ļ� %s - %s\n"
#: usertab.c:68
#, c-format
msgid "Failed to move till the end of the usertab file %s: %s\n"
-msgstr "ÎÞ·¨Òƶ¯Ö±µ½Óû§±íÎļþĩβ %s: %s\n"
+msgstr "���ƶ�ֱ���û����ļ�ĩβ %s: %s\n"
#: usertab.c:78
#, c-format
msgid "Failed to rewind the usertab file %s: %s\n"
-msgstr "ÎÞ·¨×ª»ØÓû§±íÎļþ %s: %s\n"
+msgstr "��ת���û����ļ� %s: %s\n"
#: usertab.c:82
#, c-format
msgid "ERROR: Cannot load. Memory fault\n"
-msgstr "´íÎó: ²»ÄÜÔØÈë. ÄÚ´æ´íÎó \n"
+msgstr "����: ��������. �ڴ����� \n"
#: usertab.c:93 usertab.c:102
#, c-format
msgid "The list of the users is too long in your %s file.\n"
-msgstr "Óû§Áбí¹ý³¤ÔÚÄãµÄ %s Îļþ.\n"
+msgstr "�û��б����������� %s �ļ�.\n"
#: usertab.c:149
#, fuzzy, c-format
msgid "Cannot prepare ldap URI for server %s on port %d\n"
-msgstr "²»ÄÜÁ¬½ÓÖÁLDAP·þÎñÆ÷ %s ʹÓÃ¶Ë¿Ú %d\n"
+msgstr "���������LDAP������ %s ʹ�ö˿� %d\n"
#: usertab.c:155
#, fuzzy, c-format
msgid "Unable to connect to LDAP server %s on port %d: %d (%s)\n"
-msgstr "²»ÄÜÁ¬½ÓÖÁLDAP·þÎñÆ÷ %s ʹÓÃ¶Ë¿Ú %d\n"
+msgstr "���������LDAP������ %s ʹ�ö˿� %d\n"
#: usertab.c:161
#, c-format
#: usertab.c:166
#, c-format
msgid "Could not set LDAP protocol version %d\n"
-msgstr "²»ÄÜÉèÖÃLDAPÐÒé°汾 %d\n"
+msgstr "��������LDAPЭ���汾 %d\n"
#: usertab.c:173
#, c-format
msgid "Cannot bind to LDAP server: %s\n"
-msgstr "²»ÄÜ°ó¶¨ÖÁLDAP·þÎñÆ÷: %s\n"
+msgstr "���ܰ�����LDAP������: %s\n"
#: usertab.c:234
#, c-format
msgid "LDAP search failed: %s\n"
-msgstr "LDAPËÑË÷ʧ°Ü: %s\n"
+msgstr "LDAP����ʧ��: %s\n"
#: usertab.c:235
#, c-format
#: usertab.c:266 usertab.c:276
#, c-format
msgid "Loading User table: %s\n"
-msgstr "ÔØÈëÓû§±í: %s\n"
+msgstr "�����û���: %s\n"
#: usertab.c:271
#, c-format
msgid "LDAP module not compiled in sarg\n"
-msgstr "LDAPģ¿éûÓбàÒëÔÚsargÖÐ\n"
+msgstr "LDAPģ��û�б�����sarg��\n"
#: util.c:55
#, c-format
msgid "getword backtrace:\n"
-msgstr "getword »ØËÝ:\n"
+msgstr "getword ����:\n"
#: util.c:74
#, c-format
msgid "Cannot parse again the line as it was modified\n"
-msgstr "²»ÄÜÔٴνâÎöÒòΪËüÒѾ±»ÐÞ¸Ä\n"
+msgstr "�����ٴν�����Ϊ���Ѿ�����\n"
#: util.c:86
#, c-format
#: util.c:263
#, c-format
msgid "Invalid buffer passed to getword_ptr\n"
-msgstr "²»´æÔڵĻº³åÇø´«µÝ¸ø getword_ptr\n"
+msgstr "�����ڵĻ��������ݸ� getword_ptr\n"
#: util.c:317
#, c-format
msgid "Invalid path (%s). Please, use absolute paths only.\n"
msgstr ""
-"²»´æÔڵķ¾¶ (%s).\n"
-" Çë½öʹÓþø¶Ô·¾¶.\n"
+"�����ڵ�·�� (%s).\n"
+" ����ʹ�þ���·��.\n"
+<<<<<<< HEAD
+#: util.c:318 util.c:333 util.c:345
+#, c-format
+msgid "process aborted.\n"
+msgstr "������ֹ.\n"
+
+#: util.c:325
+=======
#: util.c:324
+>>>>>>> origin/v2.3
#, c-format
msgid "directory name too long: %s\n"
-msgstr "Îļþ¼ÐÃû¹ý³¤: %s\n"
+msgstr "�ļ���������: %s\n"
#: util.c:358
#, c-format
msgid ""
"The requested number of digits passed to my_lltoa (%d) is bigger than the "
"output buffer size (%d)\n"
-msgstr "´«µÝ¸ømy_lltoa (%d) ÊýλҪÇó´óÓÚÊä³ö»º´æ´óС (%d)\n"
+msgstr "���ݸ�my_lltoa (%d) ��λҪ�������������С (%d)\n"
#: util.c:433
msgid ""
"January,February,March,April,May,June,July,August,September,October,November,"
"December"
-msgstr "һÔÂ,¶þÔÂ,ÈýÔÂ,ËÄÔÂ,ÎåÔÂ,ÁùÔÂ,ÆßÔÂ,°ËÔÂ,¾ÅÔÂ,Ê®ÔÂ,ʮһÔÂ,Ê®¶þÔÂ"
+msgstr "һ��,����,����,����,����,����,����,����,����,ʮ��,ʮһ��,ʮ����"
#: util.c:438 util.c:442
#, c-format
#: util.c:660
#, c-format
msgid "Failed to read the date in %s\n"
-msgstr "¶ÁÈ¡ÈÕÆÚʧ°Ü %s\n"
+msgstr "��ȡ����ʧ�� %s\n"
#: util.c:716
#, c-format
msgid "Failed to read the number of users in %s\n"
-msgstr "¶ÁÈ¡Óû§Êýʧ°Ü %s\n"
+msgstr "��ȡ�û���ʧ�� %s\n"
#: util.c:761
#, c-format
msgid "There is a invalid user in file %s\n"
-msgstr "Óв»´æÔÚµÄÓû§ÔÚÎļþ %s\n"
+msgstr "�в����ڵ��û����ļ� %s\n"
#: util.c:767
#, c-format
msgid "There a broken total number of access in file %s\n"
-msgstr "Óв»ÍêÕûµÄ·ÃÎÊ×ÜÊýÔÚÎļþ %s\n"
+msgstr "�в������ķ����������ļ� %s\n"
#: util.c:926
#, c-format
msgid "Cannot copy images to target directory %simages\n"
-msgstr "²»ÄÜ¿½±´¾µÏñµ½Ä¿±êÎļþ¼Ð %simages\n"
+msgstr "���ܿ���������Ŀ���ļ��� %simages\n"
#: util.c:939
#, c-format
msgid "(util) Can't open directory %s: %s\n"
-msgstr "(util) ²»ÄÜ´ò¿ªÎļþ¼Ð %s: %s\n"
+msgstr "(util) ���ܴ����ļ��� %s: %s\n"
#: util.c:947
#, c-format
msgid "Cannot stat \"%s\" - %s\n"
-msgstr "²»ÄÜ¿ªʼ \"%s\" - %s\n"
+msgstr "���ܿ�ʼ \"%s\" - %s\n"
#: util.c:958
#, c-format
msgid "Failed to copy image %s to %s\n"
-msgstr "¿½±´¾µÏñʧ°Ü %s µ½ %s\n"
+msgstr "��������ʧ�� %s �� %s\n"
#: util.c:964 util.c:967
msgid "Cannot open file"
-msgstr "²»ÄÜ´ò¿ªÎļþ"
+msgstr "���ܴ����ļ�"
#: util.c:1054 util.c:1077
#, c-format
msgid "File %s already exists, moved to %s\n"
-msgstr "Îļþ %s ÒѾ´æÔÚ, Òƶ¯ÖÁ %s\n"
+msgstr "�ļ� %s �Ѿ�����, �ƶ��� %s\n"
#: util.c:1095
#, c-format
msgid "cannot open %s for writing\n"
-msgstr "²»ÄÜ´ò¿ªÎļþ %s À´Ð´Èë\n"
+msgstr "���ܴ����ļ� %s �д��\n"
#: util.c:1104 util.c:1109
#, c-format
msgid "Failed to write the date in %s\n"
-msgstr "дÈëʱ¼äʱʧ°ÜÔÚw %s\n"
+msgstr "д��ʱ��ʱʧ����w %s\n"
#: util.c:1130
#, fuzzy, c-format
msgid "Invalid buffer length passed to the function to safely copy a string\n"
-msgstr "²»´æÔڵĻº³åÇø´«µÝ¸ø getword_ptr\n"
+msgstr "�����ڵĻ��������ݸ� getword_ptr\n"
#: util.c:1209
#, c-format
msgid ""
"The date passed as argument is not formated as dd/mm/yyyy or dd/mm/yyyy-dd/"
"mm/yyyy\n"
-msgstr "×÷Ϊ²ÎÊýʱÈÕÆÚ¸ñʽ²»ÄÜΪdd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy\n"
+msgstr "��Ϊ����ʱ���ڸ�ʽ����Ϊdd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy\n"
#: util.c:1214 util.c:1218
#, c-format
"The date range passed as argument is not formated as dd/mm/yyyy or dd/mm/"
"yyyy-dd/mm/yyyy\n"
msgstr ""
-"×÷Ϊ²ÎÊýµÄÈÕÆÚÇø¼ä¸ñʽ²»ÄÜΪdd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy-dd/mm/yyyy\n"
+"��Ϊ����������������ʽ����Ϊdd/mm/yyyy or dd/mm/yyyy-dd/mm/yyyy-dd/mm/yyyy\n"
#: util.c:1231
#, c-format
msgid "Failed to get the current time\n"
-msgstr "µÃµ½×¼È·Ê±¼äʱʧ°Ü\n"
+msgstr "�õ�ȷʱ��ʱʧ��\n"
#: util.c:1236
#, c-format
msgid "Invalid number of days in -d parameter\n"
-msgstr "ÎÞЧµÄÈÕÆÚÊý×ÖÔÚʹÓà -d ²ÎÊýʱ\n"
+msgstr "��Ч������������ʹ�� -d ����ʱ\n"
#: util.c:1242 util.c:1266 util.c:1273 util.c:1282 util.c:1295
#, c-format
msgid "Cannot convert local time: %s\n"
-msgstr "²»ÄÜת»»±¾µØʱ¼ä: %s\n"
+msgstr "����ת������ʱ��: %s\n"
#: util.c:1261
#, c-format
msgid "Invalid number of weeks in -d parameter\n"
-msgstr "ÎÞЧµÄÖÜÊý×ÖÔÚʹÓà -d ²ÎÊýʱ\n"
+msgstr "��Ч����������ʹ�� -d ����ʱ\n"
#: util.c:1290
#, c-format
msgid "Invalid number of months in -d parameter\n"
-msgstr "ÎÞЧµÄÔ·ÝÊý×ÖÔÚʹÓà -d ²ÎÊýʱ\n"
+msgstr "��Ч���·�������ʹ�� -d ����ʱ\n"
#: util.c:1324
#, fuzzy, c-format
#: util.c:1375
#, c-format
msgid "Purging temporary file sarg-general\n"
-msgstr "Çå³þÁÙʱÎļþsarg-general\n"
+msgstr "������ʱ�ļ�sarg-general\n"
#: util.c:1378
#, c-format
msgid "(removetmp) directory too long to remove %s/sarg-period\n"
-msgstr "(removetmp) Îļþ¼ÐÌ«³¤²»Äܱ»É¾³ý %s/sarg-period\n"
+msgstr "(removetmp) �ļ���̫�����ܱ�ɾ�� %s/sarg-period\n"
#: util.c:1382
#, c-format
msgid "(removetmp) Cannot open file %s\n"
-msgstr "(removetmp) ²»ÄÜ´ò¿ªÎļþ %s\n"
+msgstr "(removetmp) ���ܴ����ļ� %s\n"
#: util.c:1387
#, c-format
msgid "Failed to close %s after writing the total line - %s\n"
-msgstr "дÈëËùÓÐÐÐÖ®ºó¹Ø±Õ %s ʱʧ°Ü - %s\n"
+msgstr "д��������֮���ر� %s ʱʧ�� - %s\n"
#: util.c:1404
#, c-format
msgid "(util) Cannot open file %s (exclude_codes)\n"
-msgstr "(util)²»ÄÜ´ò¿ªÎļþ %s (exclude_codes)\n"
+msgstr "(util)���ܴ����ļ� %s (exclude_codes)\n"
#: util.c:1409
#, c-format
msgid "Failed to move till the end of the excluded codes file %s: %s\n"
-msgstr "ÔÚÅųý´úÂëÎļþ֮ǰ²»ÄÜÒƶ¯¸ÃÎļþ %s: %s\n"
+msgstr "���ų������ļ�֮ǰ�����ƶ����ļ� %s: %s\n"
#: util.c:1418
#, c-format
msgid "Failed to rewind the excluded codes file %s: %s\n"
-msgstr "תÏòÅųý´úÂëÎļþʱʧ°Ü %s: %s\n"
+msgstr "ת���ų������ļ�ʱʧ�� %s: %s\n"
#: util.c:1435
#, c-format
msgid "Too many codes to exclude in file %s\n"
-msgstr "ÔÚÎļþÖйý¶àµÄ±àÂë±»Åųý %s\n"
+msgstr "���ļ��й����ı��뱻�ų� %s\n"
#: util.c:1589
#, c-format
msgid "Cannot get disk space because the path %s%s is too long\n"
-msgstr "²»ÄÜ»ñÈ¡´ÅÅÌ¿Õ¼äÒòΪ·¾¶ %s%s ¹ý³¤\n"
+msgstr "���ܻ�ȡ���̿ռ���Ϊ·�� %s%s ����\n"
#: util.c:1593
#, c-format
msgid "Cannot get disk space with command %s\n"
-msgstr "²»Äܵõ½´ÅÅÌ¿Õ¼äʹÓÃÃüÁî %s\n"
+msgstr "���ܵõ����̿ռ�ʹ������ %s\n"
#: util.c:1597
#, c-format
msgid "Cannot get disk size with command %s\n"
-msgstr "²»ÄÜ»ñÈ¡´ÅÅÌ´óСʹÓÃÃüÁî %s\n"
+msgstr "���ܻ�ȡ���̴�Сʹ������ %s\n"
#: util.c:1602
#, c-format
msgid "The command %s failed\n"
-msgstr "ÃüÁî %s ʧ°Ü\n"
+msgstr "���� %s ʧ��\n"
#: util.c:1786
#, c-format
msgid "SARG Version: %s\n"
-msgstr "SARG°汾: %s\n"
+msgstr "SARG�汾: %s\n"
#: util.c:1818 util.c:1909 util.c:1951
#, c-format
msgid "directory name to delete too long: %s/%s\n"
-msgstr "Îļþ¼ÐÃû³ÆÌ«³¤²»ÄÜɾ³ý: %s/%s\n"
+msgstr "�ļ�������̫������ɾ��: %s/%s\n"
#: util.c:1827
#, c-format
msgid "cannot stat %s\n"
-msgstr "²»ÄÜ¿ªʼ %s\n"
+msgstr "���ܿ�ʼ %s\n"
+<<<<<<< HEAD
+#: util.c:1835 util.c:1848
+#, c-format
+msgid "cannot delete %s - %s\n"
+msgstr " ����ɾ�� %s - %s\n"
+
+#: util.c:1841
+=======
#: util.c:1838 util.c:1969
+>>>>>>> origin/v2.3
#, c-format
msgid "unknown path type %s\n"
-msgstr "δ֪µÄ·¾¶ÀàÐÍ %s\n"
+msgstr "δ֪��·������ %s\n"
+
+#~ msgid "Sort"
+#~ msgstr "����"
+
+#, fuzzy
+#~ msgid "USER"
+#~ msgstr "�û�"
+
+#~ msgid "Temporary directory name too long: %s\n"
+#~ msgstr "��ʱ�ļ������ƹ���: %s\n"
+
+#~ msgid "SARG: MALICIUS CODE DETECTED.\n"
+#~ msgstr "SARG: MALICIUS �������d.\n"
+
+#~ msgid ""
+#~ "SARG: I think someone is trying to execute arbitrary code in your system "
+#~ "using sarg.\n"
+#~ msgstr "SARG: ���������ڳ���ִ�������Ĵ���������ϵͳ��ʹ��sarg.\n"
+
+#~ msgid ""
+#~ "SARG: please review your access.log and/or your useragent.log file.\n"
+#~ msgstr "SARG: ���쿴access.log ��/�� useragent.log �ļ�.\n"
+
+#~ msgid "SARG: process stoped. No actions taken.\n"
+#~ msgstr "SARG: ������ֹ.û��ִ��.\n"
+
+#~ msgid "temporary directory too long: %s/sarg\n"
+#~ msgstr "��ʱ�ļ��й���: %s/sarg\n"
#: util.c:1902 util.c:1944
#, c-format
#: util.c:1919 util.c:1960
#, fuzzy, c-format
msgid "cannot stat \"%s\"\n"
--msgstr "²»ÄÜ¿ªʼ %s\n"
++msgstr "���ܿ�ʼ %s\n"
#: util.c:1925
#, c-format
msgid "Unknown path type \"%s\". Check your temporary directory\n"
msgstr ""
+ #~ msgid "H"
+ #~ msgstr "H"
+
#, fuzzy
#~ msgid ""
#~ "SARG: Maybe you have a broken record or garbage in the names of the "
#~ "months.\n"
--#~ msgstr "¿ÉÄÜÓв»ÍêÕûµÄ¼Í¼»òÕßÀ¬»ø´æÔÚÎļþ %s\n"
++#~ msgstr "�����в������ļ�¼������������ļ� %s\n"
#, fuzzy
#~ msgid ""
#~ "Maybe you have a broken record or garbage in the name of the months.\n"
--#~ msgstr "¿ÉÄÜÓв»ÍêÕûµÄ¼Í¼»òÕßÀ¬»ø´æÔÚÎļþ %s\n"
++#~ msgstr "�����в������ļ�¼������������ļ� %s\n"
#~ msgid ""
#~ "\n"
#~ "\tPlease donate to the sarg project:"
#~ msgstr ""
#~ "\n"
--#~ "\tÇë¾èÖúSargÏîĿ:"
++#~ "\t������Sarg��Ŀ:"
#, fuzzy
#~ msgid "Failed to delete the file \"%s\" after processing it - %s\n"
--#~ msgstr "ɾ³ýÎļþʧ°Ü %s\n"
++#~ msgstr "ɾ���ļ�ʧ�� %s\n"
#~ msgid "Report"
--#~ msgstr "±¨¸æ"
++#~ msgstr "����"
#, fuzzy
#~ msgid "Cannot delete unused file \"%s\" - %s\n"
--#~ msgstr "ÎÞ·¨É¾³ýÁÙʱÎļþ %s - %s\n"
++#~ msgstr "��ɾ����ʱ�ļ� %s - %s\n"
#, fuzzy
#~ msgid "Failed to remove the file %s: %s\n"
--#~ msgstr "ÒƳýÎļþʧ°Ü %s\n"
++#~ msgstr "�Ƴ��ļ�ʧ�� %s\n"
#~ msgid "Failed to delete the file %s\n"
--#~ msgstr "ɾ³ýÎļþʧ°Ü %s\n"
++#~ msgstr "ɾ���ļ�ʧ�� %s\n"
#~ msgid "process aborted.\n"
--#~ msgstr "½ø³ÌÖÐֹ.\n"
++#~ msgstr "������ֹ.\n"
#~ msgid "cannot delete %s - %s\n"
--#~ msgstr " ²»ÄÜɾ³ý %s - %s\n"
++#~ msgstr " ����ɾ�� %s - %s\n"
#~ msgid " -b Useragent log"
-#~ msgstr " -b Óû§´úÀíÈÕ־"
+#~ msgstr " -b �û�������־"
#~ msgid " -c Exclude file"
-#~ msgstr " -c ÅųýµÄÎļþ"
+#~ msgstr " -c �ų����ļ�"
#~ msgid " -n Resolve IP Address"
-#~ msgstr " -n ½âÎöIPµØַ"
+#~ msgstr " -n ����IP��ַ"
#~ msgid " -o Output dir"
-#~ msgstr " -o Êä³öĿ¼"
+#~ msgstr " -o ����Ŀ¼"
#~ msgid " -t Time [HH, HH:MM]"
-#~ msgstr " -t ʱ¼ä[HH,HH:MM]"
+#~ msgstr " -t ʱ��[HH,HH:MM]"
#~ msgid " -u User"
-#~ msgstr " -u Óû§"
+#~ msgstr " -u �û�"
#~ msgid "URL too long in redirector log file %s\n"
-#~ msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐÁ¬½Ó¹ý³¤ %s\n"
+#~ msgstr "���ض�����־�ļ�����ӹ��� %s\n"
#~ msgid "Temporary file name too long: %s/%s.htmp\n"
-#~ msgstr "ÁÙʱÎļþÃû¹ý³¤: %s/%s.htmp\n"
+#~ msgstr "��ʱ�ļ�������: %s/%s.htmp\n"
#~ msgid "(report-1) Cannot open file %s - %s\n"
-#~ msgstr "(report-1) ²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+#~ msgstr "(report-1) ���ܴ����ļ� %s - %s\n"
#~ msgid "Path too long %s/%s.htmp\n"
-#~ msgstr "·¾¶¹ý³¤ %s/%s.htmp\n"
+#~ msgstr "·������ %s/%s.htmp\n"
#~ msgid "(report-2) Cannot open file %s - %s\n"
-#~ msgstr "(report-2)²»ÄÜ´ò¿ªÎļþ %s - %s\n"
+#~ msgstr "(report-2)���ܴ����ļ� %s - %s\n"
#~ msgid "pre-sorting files\n"
-#~ msgstr "ԤÅÅÐòÎļþ\n"
+#~ msgstr "Ԥ�����ļ�\n"
#~ msgid "Cannot delete temporary file %s - %s\n"
-#~ msgstr "ÎÞ·¨É¾³ýÁÙʱÎļþ %s - %s\n"
+#~ msgstr "��ɾ����ʱ�ļ� %s - %s\n"
#~ msgid "Cannot get the size of file %s"
-#~ msgstr "²»ÄÜ»ñÈ¡ÎļþµÄ´óС %s"
+#~ msgstr "���ܻ�ȡ�ļ��Ĵ�С %s"
#~ msgid "ERROR: Cannot load. Memory fault"
-#~ msgstr "´íÎó: ²»ÄܼÓÔØ,´æÄÚ´íÎó"
+#~ msgstr "����: ���ܼ���,���ڴ���"
#, fuzzy
#~ msgid "(html11) Cannot open file %s - %s\n"
-#~ msgstr "(html11) ²»ÄÜ´ò¿ªÎļþ %s\n"
+#~ msgstr "(html11) ���ܴ����ļ� %s\n"
#~ msgid "(html11) read error in %s\n"
-#~ msgstr "(html11) ¶ÁÈ¡´íÎóÔÚ %s\n"
+#~ msgstr "(html11) ��ȡ������ %s\n"
#~ msgid "IPv6 addresses are not supported (found in %s)\n"
-#~ msgstr "IPv6²»±»Ö§³Ö(found in %s)\n"
+#~ msgstr "IPv6����֧��(found in %s)\n"
#~ msgid "There is a broken record or garbage in your %s file\n"
-#~ msgstr "Óв»ÍêÕûµÄ¼Í¼»òÀ¬»øÔÚÄãµÄ %s ÎļþÖÐ\n"
+#~ msgstr "�в������ļ�¼����������� %s �ļ���\n"
#~ msgid "Ignoring unknown user file %s\n"
-#~ msgstr "Ìø¹ýδ֪µÄÓû§Îļþ %s\n"
+#~ msgstr "����δ֪���û��ļ� %s\n"
#~ msgid "(html2) Cannot open file %s\n"
-#~ msgstr "(html2) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+#~ msgstr "(html2) ���ܴ�����־�ļ� %s\n"
#~ msgid "Unknown user ID %s in directory %s\n"
-#~ msgstr "δ֪µÄÓû§ID %s ÔÚĿ¼ %s\n"
+#~ msgstr "δ֪���û�ID %s ��Ŀ¼ %s\n"
#~ msgid "Time period must be MM or MM:SS. Exit\n"
-#~ msgstr "ʱ¼äÇø¼ä±ØÐëΪ MM »òÕß MM:SS.Exit\n"
+#~ msgstr "ʱ����������Ϊ MM ���� MM:SS.Exit\n"
#~ msgid "Path too long %s/%s.utmp\n"
-#~ msgstr "·¾¶¹ý³¤ %s/%s.utmp\n"
+#~ msgstr "·������ %s/%s.utmp\n"
#~ msgid "(totger) Cannot open file %s\n"
-#~ msgstr "(totger) ²»ÄÜ´ò¿ªÎļþ %s\n"
+#~ msgstr "(totger) ���ܴ����ļ� %s\n"
#~ msgid "Not enough memory to read the temporary file %s\n"
-#~ msgstr "ûÓÐ×ã¹»µÄÄÚ´æÈ¥¶ÁÈ¡ÁÙʱÎļþ %s\n"
+#~ msgstr "û���㹻���ڴ�ȥ��ȡ��ʱ�ļ� %s\n"
#~ msgid "Failed to move to the end of %s - %s\n"
-#~ msgstr "Òƶ¯µ½Ä©Î²Ê±Ê§°Ü %s - %s\n"
+#~ msgstr "�ƶ���ĩβʱʧ�� %s - %s\n"
#~ msgid "Failed to rewind to the beginning of the file %s: %s\n"
-#~ msgstr "תÏòÎļþ¿ªÊ¼²¿·Öʱʧ°Ü %s: %s\n"
+#~ msgstr "ת���ļ���ʼ����ʱʧ�� %s: %s\n"
#~ msgid "Failed to write the total line in %s - %s\n"
-#~ msgstr "дÈëËùÓÐÐÐʱʧ°Ü%s - %s\n"
+#~ msgstr "д��������ʱʧ��%s - %s\n"
#~ msgid "Failed to truncate %s: %s\n"
-#~ msgstr "½Ø¶Ìʱʧ°Ü %s: %s\n"
+#~ msgstr "�ض�ʱʧ�� %s: %s\n"
#~ msgid "Sort"
-#~ msgstr "ÅÅÐò"
+#~ msgstr "����"
#, fuzzy
#~ msgid "USER"
-#~ msgstr "Óû§"
+#~ msgstr "�û�"
#~ msgid "Temporary directory name too long: %s\n"
-#~ msgstr "ÁÙʱÎļþ¼ÐÃû³Æ¹ý³¤: %s\n"
+#~ msgstr "��ʱ�ļ������ƹ���: %s\n"
#~ msgid "SARG: MALICIUS CODE DETECTED.\n"
-#~ msgstr "SARG: MALICIUS ´úÂëÕì²d.\n"
+#~ msgstr "SARG: MALICIUS �������d.\n"
#~ msgid ""
#~ "SARG: I think someone is trying to execute arbitrary code in your system "
#~ "using sarg.\n"
-#~ msgstr "SARG: ÎÒÏëÓÐÈËÔÚ³¢ÊÔÖ´ÐÐÈÎÒâµÄ´úÂëÔÚÄãµÄϵͳÖÐʹÓÃsarg.\n"
+#~ msgstr "SARG: ���������ڳ���ִ�������Ĵ���������ϵͳ��ʹ��sarg.\n"
#~ msgid ""
#~ "SARG: please review your access.log and/or your useragent.log file.\n"
-#~ msgstr "SARG: Çë²ì¿´access.log ºÍ/»ò useragent.log Îļþ.\n"
+#~ msgstr "SARG: ���쿴access.log ��/�� useragent.log �ļ�.\n"
#~ msgid "SARG: process stoped. No actions taken.\n"
-#~ msgstr "SARG: ½ø³ÌÖÐÖ¹.ûÓÐÖ´ÐÐ.\n"
+#~ msgstr "SARG: ������ֹ.û��ִ��.\n"
#~ msgid "temporary directory too long: %s/sarg\n"
-#~ msgstr "ÁÙʱÎļþ¼Ð¹ý³¤: %s/sarg\n"
+#~ msgstr "��ʱ�ļ��й���: %s/sarg\n"
#~ msgid "(convlog) Cannot open log file %s\n"
-#~ msgstr "(convlog) ²»ÄÜ´ò¿ªÈÕÖ¾Îļþ %s\n"
+#~ msgstr "(convlog) ���ܴ�����־�ļ� %s\n"
#~ msgid "user name too long for %s/%s/graph_day.png\n"
-#~ msgstr "Óû§Ãû¹ý³¤ %s/%s/graph_day.png\n"
+#~ msgstr "�û������� %s/%s/graph_day.png\n"
#~ msgid "Month string too long in redirector log file %s\n"
-#~ msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐÔ·Ý×Ö·û´®¹ý³¤ %s\n"
+#~ msgstr "���ض�����־�ļ����·��ַ������� %s\n"
#~ msgid "Day string too long in redirector log file %s\n"
-#~ msgstr "ÔÚÖض¨ÏòÈÕÖ¾ÎļþÖÐÈÕÆÚ×Ö·û´®Ì«³¤ %s\n"
+#~ msgstr "���ض�����־�ļ��������ַ���̫�� %s\n"
#~ msgid "There is a broken rule in file %s\n"
-#~ msgstr "Óв»ÍêÕûµÄ¹æÔòÔÚÎļþ %s\n"
+#~ msgstr "�в������Ĺ������ļ� %s\n"
#~ msgid "(authfail) read error in %s\n"
#~ msgstr "(authfail) ¶ÁÈ¡´íÎó%s\n"