--- doc/pine.1.orig Fri Sep 16 05:01:32 2005 +++ doc/pine.1 Fri Oct 7 21:53:29 2005 @@ -333,11 +333,11 @@ .br /etc/mime.types System-wide file ext. to MIME type mapping .br -/usr/local/lib/pine.info Local pointer to system administrator. +/usr/local/etc/pine.info Local pointer to system administrator. .br -/usr/local/lib/pine.conf System-wide configuration file. +/usr/local/etc/pine.conf System-wide configuration file. .br -/usr/local/lib/pine.conf.fixed Non-overridable configuration file. +/usr/local/etc/pine.conf.fixed Non-overridable configuration file. .br /tmp/.\\usr\\spool\\mail\\xxxx Per-folder mailbox lock files. .br --- pico/osdep/term.cap.orig Thu Jul 22 06:06:24 2004 +++ pico/osdep/term.cap Fri Oct 7 21:53:28 2005 @@ -313,7 +313,8 @@ _kppu = tgetstr("kP", &p); _kppd = tgetstr("kN", &p); _kphome = tgetstr("kh", &p); - _kpend = tgetstr("kH", &p); + if((_kpend = tgetstr("@7", &p)) == NULL) + _kpend = tgetstr("kH",&p); _kpdel = tgetstr("kD", &p); _kf1 = tgetstr("k1", &p); _kf2 = tgetstr("k2", &p); --- pico/osdep/os-bsf.h.orig Sat Jan 10 07:28:09 2004 +++ pico/osdep/os-bsf.h Fri Oct 7 21:53:28 2005 @@ -154,7 +154,7 @@ /* * Place where mail gets delivered (for pico's new mail checking) */ -#define MAILDIR "/usr/spool/mail" +#define MAILDIR "/var/mail" /* * What and where the tool that checks spelling is located. If this is --- pico/search.c.orig Fri Jul 2 05:33:30 2004 +++ pico/search.c Fri Oct 7 21:53:28 2005 @@ -98,12 +98,15 @@ int bc; int pc; { + bc = (unsigned char)bc; + pc = (unsigned char)pc; + if ((curwp->w_bufp->b_mode & MDEXACT) == 0){ - if (bc>='a' && bc<='z') - bc -= 0x20; + if (islower(bc)) + bc = toupper(bc); - if (pc>='a' && pc<='z') - pc -= 0x20; + if (islower(pc)) + pc = toupper(pc); } return(bc == pc); @@ -132,9 +135,9 @@ while(1){ if (gmode & MDREPLACE) - status = srpat("Search", defpat, repl_mode); + status = srpat("搜尋", defpat, repl_mode); else - status = readpattern("Search", TRUE); + status = readpattern("搜尋", TRUE); switch(status){ case TRUE: /* user typed something */ @@ -147,14 +150,14 @@ saved_state = save_pico_state(); (*Pmaster->helper)(Pmaster->search_help, - "Help for Searching", 1); + "搜尋的輔助說明", 1); if(saved_state){ restore_pico_state(saved_state); free_pico_state(saved_state); } } else - pico_help(SearchHelpText, "Help for Searching", 1); + pico_help(SearchHelpText, "搜尋的輔助說明", 1); case (CTRL|'L'): /* redraw requested */ pico_refresh(FALSE, 1); @@ -241,7 +244,7 @@ default: if(status == ABORT) - emlwrite("Search Cancelled", NULL); + emlwrite("取消搜尋", NULL); else mlerase(); @@ -289,16 +292,16 @@ /* and complain if not there */ if (status == FALSE){ - emlwrite("\"%s\" not found", defpat); + emlwrite("找不到 \"%s\"", defpat); } else if((gmode & MDREPLACE) && repl_mode == TRUE){ status = replace_pat(defpat, &wrapt2); /* replace pattern */ if (wrapt == TRUE || wrapt2 == TRUE) - emlwrite("Replacement %srapped", - (status == ABORT) ? "cancelled but w" : "W"); + emlwrite("取代%s由檔案起始從頭搜尋", + (status == ABORT) ? "已取消,但" : ""); } else if(wrapt == TRUE){ - emlwrite("Search Wrapped", NULL); + emlwrite("從頭搜尋", NULL); } else if(status == TRUE){ emlwrite("", NULL); @@ -327,7 +330,7 @@ /* additional 'replace all' menu option */ menu_pat[0].name = "^X"; menu_pat[0].key = (CTRL|'X'); - menu_pat[0].label = "Repl All"; + menu_pat[0].label = "取代所有"; KS_OSDATASET(&menu_pat[0], KS_NONE); menu_pat[1].name = NULL; @@ -339,10 +342,10 @@ pputs(origpat, 1); /* highlight word */ (*term.t_rev)(0); - sprintf(prompt, "Replace%s \"", repl_all ? " every" : ""); + sprintf(prompt, "取代%s \"", repl_all ? "每一個" : ""); expandp(&defpat[0], &prompt[strlen(prompt)], NPAT/2); - strcat(prompt, "\" with"); + strcat(prompt, "\" 為"); if(rpat[0] != 0){ strcat(prompt, " ["); expandp(rpat, &prompt[strlen(prompt)], NPAT/2); @@ -384,14 +387,14 @@ saved_state = save_pico_state(); (*Pmaster->helper)(Pmaster->search_help, - "Help for Searching", 1); + "搜尋的輔助說明", 1); if(saved_state){ restore_pico_state(saved_state); free_pico_state(saved_state); } } else - pico_help(SearchHelpText, "Help for Searching", 1); + pico_help(SearchHelpText, "搜尋的輔助說明", 1); case (CTRL|'L'): /* redraw requested */ pico_refresh(FALSE, 1); @@ -401,18 +404,18 @@ case (CTRL|'X'): /* toggle replace all option */ if (repl_all){ repl_all = FALSE; - menu_pat[0].label = "Repl All"; + menu_pat[0].label = "取代所有"; } else{ repl_all = TRUE; - menu_pat[0].label = "Repl One"; + menu_pat[0].label = "取代一個"; } break; default: if(status == ABORT) - emlwrite("Replacement Cancelled", NULL); + emlwrite("取消取代", NULL); else mlerase(); chword(defpat, origpat); @@ -462,9 +465,9 @@ (*term.t_rev)(0); fflush(stdout); - strcpy(prompt, "Replace \""); + strcpy(prompt, "取代 \""); expandp(&orig[0], &prompt[strlen(prompt)], NPAT/2); - strcat(prompt, "\" with \""); + strcat(prompt, "\" 為 \""); expandp(&repl[0], &prompt[strlen(prompt)], NPAT/2); strcat(prompt, "\""); @@ -478,13 +481,13 @@ chword(realpat, realpat); /* replace word by itself */ update(); if(status == ABORT){ /* if cancelled return */ - emlwrite("Replace All cancelled after %d changes", (char *) n); + emlwrite("在取消「取代所有」之前,已做過 %d 個改變", (char *) n); return (ABORT); /* ... else keep looking */ } } } else{ - emlwrite("No more matches for \"%s\"", orig); + emlwrite("沒有符合 \"%s\" 的字串了", orig); return (FALSE); } } @@ -502,33 +505,33 @@ EXTRAKEYS menu_pat[8]; menu_pat[i = 0].name = "^Y"; - menu_pat[i].label = "FirstLine"; + menu_pat[i].label = "第一行"; menu_pat[i].key = (CTRL|'Y'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^V"; - menu_pat[i].label = "LastLine"; + menu_pat[i].label = "最後一行"; menu_pat[i].key = (CTRL|'V'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^R"; - menu_pat[i].label = repl_mode ? "No Replace" : "Replace"; + menu_pat[i].label = repl_mode ? "不取代" : "取代"; menu_pat[i].key = (CTRL|'R'); KS_OSDATASET(&menu_pat[i], KS_NONE); if(!repl_mode){ menu_pat[++i].name = "^T"; - menu_pat[i].label = "LineNumber"; + menu_pat[i].label = "行號"; menu_pat[i].key = (CTRL|'T'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^W"; - menu_pat[i].label = "Start of Para"; + menu_pat[i].label = "段落起始"; menu_pat[i].key = (CTRL|'W'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^O"; - menu_pat[i].label = "End of Para"; + menu_pat[i].label = "段落結尾"; menu_pat[i].key = (CTRL|'O'); KS_OSDATASET(&menu_pat[i], KS_NONE); @@ -588,7 +591,7 @@ EXTRAKEYS menu_pat[2]; menu_pat[i = 0].name = "^T"; - menu_pat[i].label = "No Line Number"; + menu_pat[i].label = "無行號"; menu_pat[i].key = (CTRL|'T'); KS_OSDATASET(&menu_pat[i++], KS_NONE); @@ -633,28 +636,28 @@ EXTRAKEYS menu_pat[7]; menu_pat[i = 0].name = "^Y"; - menu_pat[i].label = "FirstLine"; + menu_pat[i].label = "第一行"; menu_pat[i].key = (CTRL|'Y'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^V"; - menu_pat[i].label = "LastLine"; + menu_pat[i].label = "最後一行"; menu_pat[i].key = (CTRL|'V'); KS_OSDATASET(&menu_pat[i], KS_NONE); if(text_mode){ menu_pat[++i].name = "^T"; - menu_pat[i].label = "LineNumber"; + menu_pat[i].label = "行號"; menu_pat[i].key = (CTRL|'T'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^W"; - menu_pat[i].label = "Start of Para"; + menu_pat[i].label = "段落起始"; menu_pat[i].key = (CTRL|'W'); KS_OSDATASET(&menu_pat[i], KS_NONE); menu_pat[++i].name = "^O"; - menu_pat[i].label = "End of Para"; + menu_pat[i].label = "段落結尾"; menu_pat[i].key = (CTRL|'O'); KS_OSDATASET(&menu_pat[i], KS_NONE); @@ -820,7 +823,7 @@ int maxlength; /* maximum chars in destination */ { - char c; /* current char to translate */ + unsigned char c; /* current char to translate */ /* scan through the string */ while ((c = *srcstr++) != 0) { --- pico/pico.c.orig Fri Apr 1 01:08:28 2005 +++ pico/pico.c Fri Oct 7 21:53:28 2005 @@ -322,7 +322,7 @@ c = GetKey(); if (term.t_nrow < 6 && c != NODATA){ (*term.t_beep)(); - emlwrite("Please make the screen bigger.", NULL); + emlwrite("請將畫面調大一些。", NULL); continue; } @@ -568,9 +568,9 @@ } if(c&CTRL) - emlwrite("\007Unknown Command: ^%c", (void *)(c&0xff)); + emlwrite("\007未知的命令:^%c", (void *)(c&0xff)); else - emlwrite("\007Unknown Command", NULL); + emlwrite("\007未知的命令", NULL); lastflag = 0; /* Fake last flags. */ return (FALSE); @@ -623,7 +623,7 @@ return(TRUE); } else{ - emlwrite("Cancel Cancelled", NULL); + emlwrite("取消", NULL); curwp->w_flag |= WFMODE; /* and modeline so we */ sgarbk = TRUE; /* redraw the keymenu */ pclear(term.t_nrow - 1, term.t_nrow + 1); @@ -632,17 +632,17 @@ } } else switch(mlyesno(Pmaster->headents - ? "Cancel message (answering \"Yes\" will abandon your mail message)" + ? "\"取消\"這個動作將會放棄你目前的信件。確定取消嗎" : (anycb() == FALSE) - ? "Cancel Edit (and abandon changes)" - : "Cancel Edit", + ? "取消編輯(並放棄所有的改變)" + : "取消編輯", FALSE)){ case TRUE: pico_all_done = COMP_CANCEL; return(TRUE); case ABORT: - emlwrite("\007Cancel Cancelled", NULL); + emlwrite("\007取消", NULL); break; default: @@ -682,7 +682,7 @@ /* First, make sure there are no outstanding problems */ if(AttachError()){ - emlwrite("\007Problem with attachments! Fix errors or delete attachments.", NULL); + emlwrite("\007有問題的附件! 請修復或刪除該附件。", NULL); return(FALSE); } @@ -722,7 +722,7 @@ if (f != FALSE /* Argument forces it. */ || anycb() == FALSE /* All buffers clean. */ /* User says it's OK. */ - || (s=mlyesno("Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES)", -1)) == FALSE) { + || (s=mlyesno("存入更改過的緩衝區 (回答 \"No\" 將清除所有已做過的修改)", -1)) == FALSE) { vttidy(); #if defined(USE_TERMCAP) || defined(USE_TERMINFO) || defined(VMS) kbdestroy(kbesc); @@ -735,7 +735,7 @@ wquit(1, 0); } else if(s == ABORT){ - emlwrite("Exit cancelled", NULL); + emlwrite("取消離開", NULL); if(term.t_mrow == 0) curwp->w_flag |= WFHARD; /* cause bottom 3 lines to paint */ } @@ -898,7 +898,7 @@ ctrlg(f, n) int f, n; { - emlwrite("Cancelled", NULL); + emlwrite("取消", NULL); return (ABORT); } @@ -909,7 +909,7 @@ rdonly() { (*term.t_beep)(); - emlwrite("Key illegal in VIEW mode", NULL); + emlwrite("這不是一個在 VIEW 模式中合法的命令", NULL); return(FALSE); } @@ -1476,7 +1476,7 @@ wp->doto = 0; } else - emlwrite("Can't allocate space for text", NULL); + emlwrite("無法配置文字的記憶體空間", NULL); return((void *)wp); } @@ -1564,7 +1564,7 @@ register LINE *lp; if((lp = lalloc(0)) == NULL){ - emlwrite("Can't allocate space for more characters",NULL); + emlwrite("無法配置記憶體空間給更多的字元",NULL); return(0); } --- pico/main.c.orig Sat Mar 27 06:36:45 2004 +++ pico/main.c Fri Oct 7 21:53:28 2005 @@ -69,7 +69,7 @@ { F9, (CTRL|'K')}, { F10, (CTRL|'U')}, { F11, (CTRL|'C')}, -#ifdef SPELLER +#if defined(SPELLER) && !defined(__FreeBSD__) { F12, (CTRL|'T')} #else { F12, (CTRL|'D')} @@ -480,7 +480,7 @@ preserve_start_stop = 1; break; case 'q': /* -q for termcap takes precedence */ - gmode ^= MDTCAPWINS; + gmode |= MDTCAPWINS; break; case 't': /* special shutdown mode */ gmode ^= MDTOOL; --- pico/file.c.orig Sat Jun 12 05:49:40 2004 +++ pico/file.c Fri Oct 7 21:53:28 2005 @@ -63,17 +63,17 @@ return(s); if(gmode&MDSCUR){ - emlwrite("File reading disabled in secure mode",NULL); + emlwrite("安全模式中已關閉讀取檔案的功\能",NULL); return(0); } if (strlen(fname) == 0) { - emlwrite("No file name entered",NULL); + emlwrite("尚未輸入檔案名",NULL); return(0); } if((gmode & MDTREE) && !in_oper_tree(fname)){ - emlwrite("Can't read file from outside of %s", opertree); + emlwrite("無法讀取 %s 以外的檔案", opertree); return(0); } @@ -137,13 +137,13 @@ menu_ins[last_menu].name = "^T"; menu_ins[last_menu].key = (CTRL|'T'); - menu_ins[last_menu].label = "To Files"; + menu_ins[last_menu].label = "檔案列表"; KS_OSDATASET(&menu_ins[last_menu], KS_NONE); if(Pmaster && Pmaster->msgntext){ menu_ins[++last_menu].name = "^W"; menu_ins[last_menu].key = (CTRL|'W'); - menu_ins[last_menu].label = msg ? "InsertFile" : "InsertMsg"; + menu_ins[last_menu].label = msg ? "插入檔案" : "插入訊息"; KS_OSDATASET(&menu_ins[last_menu], KS_NONE); } @@ -159,44 +159,43 @@ if(gmode & MDCMPLT){ menu_ins[++last_menu].name = msg ? "" : "TAB"; menu_ins[last_menu].key = (CTRL|'I'); - menu_ins[last_menu].label = msg ? "" : "Complete"; + menu_ins[last_menu].label = msg ? "" : "完成"; KS_OSDATASET(&menu_ins[last_menu], KS_NONE); } menu_ins[++last_menu].name = NULL; } - sprintf(prompt, "%s to insert from %s %s: ", - msg ? "Number of message" : "File", + sprintf(prompt, "自%s%s插入的%s:", (msg || (gmode&MDCURDIR)) - ? "current" - : ((gmode & MDTREE) || opertree[0]) ? opertree : "home", - msg ? "folder" : "directory"); + ? "目前的" + : ((gmode & MDTREE) || opertree[0]) ? opertree : "家", + msg ? "檔案匣" : "目錄", msg ? "信件編號" : "檔案"); s = mlreplyd(prompt, fname, NLINE, QDEFLT, msg ? NULL : menu_ins); /* something to read and it was edited or the default accepted */ if(fname[0] && (s == TRUE || s == FALSE)){ bye++; if(msg){ if((*Pmaster->msgntext)(atol(fname), insmsgchar)) - emlwrite("Message %s included", fname); + emlwrite("信件 %s 已含入", fname); } else{ bye++; if(gmode&MDSCUR){ - emlwrite("Can't insert file in restricted mode",NULL); + emlwrite("在限制模式中無法插入檔案",NULL); } else{ if((gmode & MDTREE) && !compresspath(opertree, fname, NLINE)){ emlwrite( - "Can't insert file from outside of %s: too many ..'s", + "無法在 %s 以外的地方插入檔案:太多 .. 了", opertree); } else{ fixpath(fname, NLINE); if((gmode & MDTREE) && !in_oper_tree(fname)) - emlwrite("Can't insert file from outside of %s", + emlwrite("無法在 %s 以外的地方插入檔案", opertree); else retval = ifile(fname); @@ -224,7 +223,7 @@ break; case (CTRL|'T'): if(msg){ - emlwrite("Can't select messages yet!", NULL); + emlwrite("還無法選擇信件!", NULL); } else{ char *fn; @@ -255,7 +254,7 @@ if((s = FileBrowse(dir, NLINE, fname, NLINE, NULL, FB_READ, NULL)) == 1){ if(gmode&MDSCUR){ - emlwrite("Can't insert in restricted mode", + emlwrite("在限制模式中無法插入", NULL); sleep(2); } @@ -296,7 +295,7 @@ if(gmode&MDSCUR){ emlwrite( - "\007Restricted mode disallows uploaded command", + "\007限制模式中不允許\上載", NULL); return(0); } @@ -461,22 +460,22 @@ strcpy(curbp->b_fname, fname); if ((s=ffropen(fname)) != FIOSUC){ /* Hard file open. */ if(s == FIOFNF) /* File not found. */ - emlwrite("New file", NULL); + emlwrite("新檔", NULL); else fioperr(s, fname); } else{ int charsread = 0; - emlwrite("Reading file", NULL); + emlwrite("讀取檔案", NULL); nline = 0L; done = newline = 0; while(!done) if((s = ffgetline(line, NLINE, &charsread, 1)) == FIOEOF){ curbp->b_flag &= ~(BFTEMP|BFCHG); gotobob(FALSE, 1); - sprintf(line,"Read %d line%s", - nline, (nline > 1) ? "s" : ""); + sprintf(line,"讀取第 %d 行", + nline); emlwrite(line, NULL); break; } @@ -534,14 +533,14 @@ fname[0] = '\0'; menu_write[0].name = "^T"; - menu_write[0].label = "To Files"; + menu_write[0].label = "檔案列表"; menu_write[0].key = (CTRL|'T'); menu_write[1].name = "TAB"; - menu_write[1].label = "Complete"; + menu_write[1].label = "完成"; menu_write[1].key = (CTRL|'I'); menu_write[2].name = NULL; for(;!(gmode & MDTOOL);){ - s = mlreplyd("File Name to write : ", fname, NFILEN, + s = mlreplyd("欲寫入的檔名:", fname, NFILEN, QDEFLT|QFFILE, menu_write); switch(s){ @@ -552,7 +551,7 @@ } case TRUE: if((gmode & MDTREE) && !compresspath(opertree, fname, NFILEN)){ - emlwrite("Can't write outside of %s: too many ..'s", + emlwrite("無法寫入 %s 以外的檔案:太多 .. 了", opertree); sleep(2); continue; @@ -560,7 +559,7 @@ else{ fixpath(fname, NFILEN); /* fixup ~ in file name */ if((gmode & MDTREE) && !in_oper_tree(fname)){ - emlwrite("Can't write outside of %s", opertree); + emlwrite("無法寫入 %s 以外的檔案", opertree); sleep(2); continue; } @@ -648,7 +647,7 @@ strcpy(fname, shows); } else { - emlwrite("Cannot write. File name too long!!",NULL); + emlwrite("無法寫入。檔名過長!",NULL); sleep(3); } } @@ -658,7 +657,7 @@ strcpy(fname, shows); } else if (s == -1){ - emlwrite("Cannot write. File name too long!!",NULL); + emlwrite("無法寫入。檔名過長!",NULL); sleep(3); } pico_refresh(FALSE, 1); @@ -696,7 +695,7 @@ return(ABORT); } } - emlwrite("Writing...", NULL); + emlwrite("正在寫入...", NULL); if ((s=writeout(fname, 0)) != -1) { if(!(gmode&MDTOOL)){ @@ -713,9 +712,9 @@ } if(s > 1) - emlwrite("Wrote %d lines", (void *)s); + emlwrite("寫入 %d 行", (void *)s); else - emlwrite("Wrote 1 line", NULL); + emlwrite("寫入 1 行", NULL); } return ((s == -1) ? FALSE : TRUE); } @@ -741,12 +740,12 @@ if ((curbp->b_flag&BFCHG) == 0) /* Return, no changes. */ return (TRUE); if (curbp->b_fname[0] == 0) { /* Must have a name. */ - emlwrite("No file name", NULL); + emlwrite("沒有檔名", NULL); sleep(2); return (FALSE); } - emlwrite("Writing...", NULL); + emlwrite("正在寫入...", NULL); if ((s=writeout(curbp->b_fname, 0)) != -1) { curbp->b_flag &= ~BFCHG; wp = wheadp; /* Update mode lines. */ @@ -757,10 +756,10 @@ wp = wp->w_wndp; } if(s > 1){ - emlwrite("Wrote %d lines", (void *)s); + emlwrite("寫入 %d 行", (void *)s); } else - emlwrite("Wrote 1 line", NULL); + emlwrite("寫入 1 行", NULL); } return (s); } @@ -883,7 +882,7 @@ curbp->b_flag &= ~BFTEMP; /* and are not temporary*/ curbp->b_linecnt = -1; /* must be recalculated */ - emlwrite("Inserting %s.", fname); + emlwrite("正在插入 %s。", fname); done = newline = 0; nline = 0L; while(!done) @@ -893,7 +892,7 @@ else forwchar(FALSE, 1); - sprintf(line,"Inserted %d line%s", nline, (nline>1) ? "s" : ""); + sprintf(line,"已插入 %d 行", nline); emlwrite(line, NULL); break; } @@ -981,7 +980,7 @@ strcat(fn, S_FILESEP); } else{ - emlwrite("File name too BIG!!",0); + emlwrite("檔名太大了!!",0); sleep(3); *fn = '\0'; } --- pico/estruct.h.orig Wed Dec 1 08:37:37 2004 +++ pico/estruct.h Fri Oct 7 21:53:28 2005 @@ -140,7 +140,7 @@ #define LOBIT_CHAR(C) ((C) > 0x1f && (C) < 0x7f) #define HIBIT_CHAR(C) ((C) > 0x7f && (C) <= 0xff) #define HIBIT_OK(C) (!(gmode & MDHBTIGN)) -#define VALID_KEY(C) (LOBIT_CHAR(C) || (HIBIT_OK(C) && HIBIT_CHAR(C))) +#define VALID_KEY(C) (((C) & 0x80) ? 1 : LOBIT_CHAR(C)) #define ctrl(c) ((c) & 0x1f) /* control character mapping */ #define STDIN_FD 0 --- pico/display.c.orig Sat May 8 05:43:40 2004 +++ pico/display.c Fri Oct 7 21:53:28 2005 @@ -73,32 +73,32 @@ * Standard pico keymenus... */ static KEYMENU menu_pico[] = { - {"^G", "Get Help", KS_SCREENHELP}, {"^O", "WriteOut", KS_SAVEFILE}, - {"^R", "Read File", KS_READFILE}, {"^Y", "Prev Pg", KS_PREVPAGE}, - {"^K", "Cut Text", KS_NONE}, {"^C", "Cur Pos", KS_CURPOSITION}, - {"^X", "Exit", KS_EXIT}, {"^J", "Justify", KS_JUSTIFY}, - {"^W", "Where is", KS_WHEREIS}, {"^V", "Next Pg", KS_NEXTPAGE}, + {"^G", "輔助說明", KS_SCREENHELP}, {"^O", "寫入檔案", KS_SAVEFILE}, + {"^R", "讀取檔案", KS_READFILE}, {"^Y", "上一頁", KS_PREVPAGE}, + {"^K", "剪下一行", KS_NONE}, {"^C", "目前位置", KS_CURPOSITION}, + {"^X", "離開", KS_EXIT}, {"^J", "重整段落", KS_JUSTIFY}, + {"^W", "搜尋", KS_WHEREIS}, {"^V", "下一頁", KS_NEXTPAGE}, {"^U", NULL, KS_NONE}, -#ifdef SPELLER - {"^T", "To Spell", KS_SPELLCHK} +#if defined(SPELLER) && !defined(__FreeBSD__) + {"^T", "拼字檢查", KS_SPELLCHK} #else - {"^D", "Del Char", KS_NONE} + {"^D", "刪除字元", KS_NONE} #endif }; #define UNCUT_KEY 10 static KEYMENU menu_compose[] = { - {"^G", "Get Help", KS_SCREENHELP}, {"^X", NULL, KS_SEND}, - {"^R", "Read File", KS_READFILE}, {"^Y", "Prev Pg", KS_PREVPAGE}, - {"^K", "Cut Text", KS_NONE}, {"^O", "Postpone", KS_POSTPONE}, - {"^C", "Cancel", KS_CANCEL}, {"^J", "Justify", KS_JUSTIFY}, - {NULL, NULL, KS_NONE}, {"^V", "Next Pg", KS_NEXTPAGE}, + {"^G", "輔助說明", KS_SCREENHELP}, {"^X", NULL, KS_SEND}, + {"^R", "讀取檔案", KS_READFILE}, {"^Y", "上一頁", KS_PREVPAGE}, + {"^K", "剪下一行", KS_NONE}, {"^O", "暫緩寫信", KS_POSTPONE}, + {"^C", "取消", KS_CANCEL}, {"^J", "重整段落", KS_JUSTIFY}, + {NULL, NULL, KS_NONE}, {"^V", "下一頁", KS_NEXTPAGE}, {"^U", NULL, KS_NONE}, -#ifdef SPELLER - {"^T", "To Spell", KS_SPELLCHK} +#if defined(SPELLER) && !defined(__FreeBSD__) + {"^T", "拼字檢查", KS_SPELLCHK} #else - {"^D", "Del Char", KS_NONE} + {"^D", "刪除字元", KS_NONE} #endif }; #define EXIT_KEY 1 @@ -154,7 +154,7 @@ (*term.t_rev)(FALSE); vscreen = (VIDEO **) malloc((term.t_nrow+1)*sizeof(VIDEO *)); if (vscreen == NULL){ - emlwrite("Allocating memory for virtual display failed.", NULL); + emlwrite("配置記憶體給虛擬顯示器失敗。", NULL); return(FALSE); } @@ -162,7 +162,7 @@ pscreen = (VIDEO **) malloc((term.t_nrow+1)*sizeof(VIDEO *)); if (pscreen == NULL){ free((void *)vscreen); - emlwrite("Allocating memory for physical display failed.", NULL); + emlwrite("配置記憶體給實體顯示器失敗。", NULL); return(FALSE); } @@ -173,7 +173,7 @@ if (vp == NULL){ free((void *)vscreen); free((void *)pscreen); - emlwrite("Allocating memory for virtual display lines failed.", + emlwrite("配置記憶體給虛擬顯示行失敗。", NULL); return(FALSE); } @@ -193,7 +193,7 @@ free((void *)vscreen); free((void *)pscreen); - emlwrite("Allocating memory for physical display lines failed.", + emlwrite("配置記憶體給實體顯示行失敗。", NULL); return(FALSE); } @@ -757,14 +757,14 @@ } if(lastflag&CFFILL){ - menu_pico[UNCUT_KEY].label = "UnJustify"; + menu_pico[UNCUT_KEY].label = "取消重整"; if(!(lastflag&CFFLBF)){ - emlwrite("Can now UnJustify!", NULL); + emlwrite("在可以取消重整!", NULL); mpresf = FARAWAY; /* remove this after next keystroke! */ } } else - menu_pico[UNCUT_KEY].label = "UnCut Text"; + menu_pico[UNCUT_KEY].label = "復原刪字"; wkeyhelp(menu_pico); sgarbk = FALSE; @@ -961,18 +961,18 @@ ShowPrompt(); else{ menu_compose[EXIT_KEY].label = (Pmaster->headents) - ? "Send" :"Exit"; + ? "送出" :"離開"; menu_compose[PSTPN_KEY].name = (Pmaster->headents) ? "^O" : NULL; menu_compose[PSTPN_KEY].label = (Pmaster->headents) - ? "Postpone" : NULL; + ? "暫緩寫信" : NULL; menu_compose[WHERE_KEY].name = (Pmaster->alt_ed) ? "^_" : "^W"; - menu_compose[WHERE_KEY].label = (Pmaster->alt_ed) ? "Alt Edit" - : "Where is"; + menu_compose[WHERE_KEY].label = (Pmaster->alt_ed) ? "自定編輯器" + : "搜尋"; KS_OSDATASET(&menu_compose[WHERE_KEY], (Pmaster->alt_ed) ? KS_ALTEDITOR : KS_WHEREIS); - menu_compose[UNCUT_KEY].label = (thisflag&CFFILL) ? "UnJustify" - : "UnCut Text"; + menu_compose[UNCUT_KEY].label = (thisflag&CFFILL) ? "取消重整" + : "復原刪字"; wkeyhelp(menu_compose); #ifdef _WINDOWS /* When alt editor is available "Where is" is not on the menu @@ -1179,11 +1179,11 @@ } menu_yesno[1].name = "Y"; - menu_yesno[1].label = (dflt == TRUE) ? "[Yes]" : "Yes"; + menu_yesno[1].label = (dflt == TRUE) ? "[是]" : "是"; menu_yesno[6].name = "^C"; - menu_yesno[6].label = "Cancel"; + menu_yesno[6].label = "取消"; menu_yesno[7].name = "N"; - menu_yesno[7].label = (dflt == FALSE) ? "[No]" : "No"; + menu_yesno[7].label = (dflt == FALSE) ? "[否]" : "否"; wkeyhelp(menu_yesno); /* paint generic menu */ sgarbk = TRUE; /* mark menu dirty */ if(Pmaster && curwp) @@ -1197,7 +1197,7 @@ switch(GetKey()){ case (CTRL|'M') : /* default */ if(dflt >= 0){ - pputs((dflt) ? "Yes" : "No", 1); + pputs((dflt) ? "是" : "否", 1); rv = dflt; } else @@ -1214,14 +1214,14 @@ case 'y' : case 'Y' : case F3 : - pputs("Yes", 1); + pputs("是", 1); rv = TRUE; break; case 'n' : case 'N' : case F4 : - pputs("No", 1); + pputs("否", 1); rv = FALSE; break; @@ -1349,7 +1349,7 @@ #endif menu_mlreply[0].name = "^G"; - menu_mlreply[0].label = "Get Help"; + menu_mlreply[0].label = "輔助說明"; KS_OSDATASET(&menu_mlreply[0], KS_SCREENHELP); for(j = 0, i = 1; i < 6; i++){ /* insert odd extras */ menu_mlreply[i].name = NULL; @@ -1369,7 +1369,7 @@ } menu_mlreply[6].name = "^C"; - menu_mlreply[6].label = "Cancel"; + menu_mlreply[6].label = "取消"; KS_OSDATASET(&menu_mlreply[6], KS_NONE); for(j = 0, i = 7; i < 12; i++){ /* insert even extras */ menu_mlreply[i].name = NULL; --- pico/composer.c.orig Fri Mar 18 03:07:47 2005 +++ pico/composer.c Fri Oct 7 21:53:28 2005 @@ -133,12 +133,12 @@ static KEYMENU menu_header[] = { - {"^G", "Get Help", KS_SCREENHELP}, {"^X", "Send", KS_SEND}, - {"^R", "Rich Hdr", KS_RICHHDR}, {"^Y", "PrvPg/Top", KS_PREVPAGE}, - {"^K", "Cut Line", KS_CURPOSITION}, {"^O", "Postpone", KS_POSTPONE}, - {"^C", "Cancel", KS_CANCEL}, {"^D", "Del Char", KS_NONE}, - {"^J", "Attach", KS_ATTACH}, {"^V", "NxtPg/End", KS_NEXTPAGE}, - {"^U", "UnDel Line", KS_NONE}, {NULL, NULL} + {"^G", "輔助說明", KS_SCREENHELP}, {"^X", "送出", KS_SEND}, + {"^R", "完整標頭", KS_RICHHDR}, {"^Y", "上一頁", KS_PREVPAGE}, + {"^K", "剪下一行", KS_CURPOSITION}, {"^O", "暫緩寫信", KS_POSTPONE}, + {"^C", "取消", KS_CANCEL}, {"^D", "刪除字元", KS_NONE}, + {"^J", "夾附件", KS_ATTACH}, {"^V", "下一頁", KS_NEXTPAGE}, + {"^U", "復原刪除行", KS_NONE}, {NULL, NULL} }; #define SEND_KEY 1 #define RICH_KEY 2 @@ -262,7 +262,7 @@ if(strlen(addrbuf) + strlen(buf) >= addrbuflen){ addrbuflen += NLINE * 4; if(!(addrbuf = (char *)realloc(addrbuf, addrbuflen))){ - emlwrite("\007Can't realloc addrbuf to %d bytes", + emlwrite("\007無法更改 addrbuf 的記憶體配置至 %d bytes", (void *) addrbuflen); return(ABORT); } @@ -329,7 +329,7 @@ * get first chunk of memory, and tie it to structure... */ if((curline = HALLOC()) == NULL){ - emlwrite("Unable to make room for full Header.", NULL); + emlwrite("無法配置空間給完整標頭。", NULL); return(FALSE); } longest = term.t_ncol - e->prlen - 1; @@ -720,7 +720,7 @@ } else{ (*term.t_beep)(); - emlwrite("Unknown Command: ^Z", NULL); + emlwrite("未知的命令:^Z", NULL); } break; @@ -733,12 +733,12 @@ err = NULL; if(headents[ods.cur_e].is_attach){ if(FormatSyncAttach() < 0){ - if(mlyesno("Problem with attachments. Postpone anyway?", + if(mlyesno("附件有問題。無論如何都要暫緩該信嗎?", FALSE) != TRUE){ if(FormatLines(headents[ods.cur_e].hd_text, "", term.t_ncol - headents[ods.cur_e].prlen, headents[ods.cur_e].break_on_comma, 0) == -1) - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); UpdateHeader(0); PaintHeader(COMPOSER_TOP_LINE, FALSE); PaintBody(1); @@ -788,7 +788,7 @@ if(len+3 > sizeof(buf)){ bfp = malloc(len+3); if((bfp=malloc(len+3)) == NULL){ - emlwrite("\007Can't malloc space for filename", + emlwrite("\007無法配置檔名的記憶體空間", NULL); continue; } @@ -1047,7 +1047,7 @@ if(len+3 > sizeof(buf)){ bfp = malloc(len+3); if((bfp=malloc(len+3)) == NULL){ - emlwrite("\007Can't malloc space for filename", + emlwrite("\007無法配置檔名的記憶體空間", NULL); continue; } @@ -1069,7 +1069,7 @@ if(FormatLines(headents[ods.cur_e].hd_text, bfp, term.t_ncol - headents[ods.cur_e].prlen, headents[ods.cur_e].break_on_comma,0)==-1){ - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); } if(bfp != buf) @@ -1134,7 +1134,7 @@ if(FormatLines(ods.cur_l, bufp, (term.t_ncol-headents[ods.cur_e].prlen), headents[ods.cur_e].break_on_comma, 0) == -1){ - emlwrite("Problem adding address to header !", + emlwrite("在標頭加入地址時出了問題!", NULL); (*term.t_beep)(); break; @@ -1270,10 +1270,10 @@ default : /* huh? */ bleep: if(ch&CTRL) - emlwrite("\007Unknown command: ^%c", (void *)(ch&0xff)); + emlwrite("\007未知的命令:^%c", (void *)(ch&0xff)); else case BADESC: - emlwrite("\007Unknown command", NULL); + emlwrite("\007未知的命令", NULL); case NODATA: break; @@ -1313,14 +1313,14 @@ if(gripe){ char xx[81]; - strcpy(xx, "Can't move down. Use ^X to "); + strcpy(xx, "無法再往下移了。請用 ^X "); strcat(xx, (Pmaster && Pmaster->exit_label) ? Pmaster->exit_label : (gmode & MDHDRONLY) - ? "eXit/Save" + ? "離開/送出" : (gmode & MDVIEW) - ? "eXit" - : "Send"); + ? "離開" + : "送出"); strcat(xx, "."); emlwrite(xx, NULL); } @@ -1355,7 +1355,7 @@ if(FormatLines(headents[ods.cur_e].hd_text, "", term.t_ncol-headents[new_e].prlen, headents[ods.cur_e].break_on_comma, 0) == -1) - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); } } else if(headents[ods.cur_e].builder) { /* expand addresses */ int mangled = 0; @@ -1426,8 +1426,8 @@ if(!(new_l = prev_sel_hline(&new_e, ods.cur_l))){ /* all the way up! */ ods.p_line = COMPOSER_TOP_LINE; if(gripe) - emlwrite("Can't move beyond top of %s", - (Pmaster->pine_flags & MDHDRONLY) ? "entry" : "header"); + emlwrite("無法移到超出%s的頂端", + (Pmaster->pine_flags & MDHDRONLY) ? "項目" : "標頭"); return(0); } @@ -1456,7 +1456,7 @@ if(FormatLines(headents[ods.cur_e].hd_text, "", term.t_ncol - headents[ods.cur_e].prlen, headents[ods.cur_e].break_on_comma,0) == -1) - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); } } else if(headents[ods.cur_e].builder){ @@ -1535,7 +1535,7 @@ lp = lp->next; } else{ - emlwrite("\007Can't allocate line for new attachment!", NULL); + emlwrite("\007無法為新的附件配置空間!", NULL); return(0); } } @@ -1549,12 +1549,12 @@ /* validate the new attachment, and reformat if needed */ if(status = SyncAttach()){ if(status < 0) - emlwrite("\007Problem attaching: %s", fn); + emlwrite("\007有問題的附件:%s", fn); if(FormatLines(headents[a_e].hd_text, "", term.t_ncol - headents[a_e].prlen, headents[a_e].break_on_comma, 0) == -1){ - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); return(0); } } @@ -1629,7 +1629,7 @@ if (term.t_nrow < 6 && ch != NODATA){ (*term.t_beep)(); - emlwrite("Please make the screen bigger.", NULL); + emlwrite("請將畫面調大一些。", NULL); continue; } @@ -1701,13 +1701,13 @@ if(headents[ods.cur_e].only_file_chars && !fallowc((unsigned char) ch)){ /* no garbage in filenames */ - emlwrite("\007Can't have a '%c' in folder name", + emlwrite("\007資料匣中不能有 '%c' 這個字元", (void *) ch); continue; } else if(headents[ods.cur_e].is_attach && intag(strng,ods.p_off)){ - emlwrite("\007Can't edit attachment number!", NULL); + emlwrite("\007無法編輯附件的代碼!", NULL); continue; } @@ -1853,7 +1853,7 @@ headents[ods.cur_e].dirty = 1; } else - emlwrite("Problem Unkilling text", NULL); + emlwrite("有問題的反刪除文字", NULL); continue; case (CTRL|'F') : @@ -1904,7 +1904,7 @@ continue; if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off)){ - emlwrite("\007Can't edit attachment number!", NULL); + emlwrite("\007無法編輯附件的代碼!", NULL); continue; } @@ -1918,7 +1918,7 @@ } if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off-1)){ - emlwrite("\007Can't edit attachment number!", NULL); + emlwrite("\007無法編輯附件的代碼!", NULL); continue; } @@ -2142,7 +2142,7 @@ instrp = breakp; if((lp = HALLOC()) == NULL){ - emlwrite("Can't allocate any more lines for header!", NULL); + emlwrite("無法再配置更多的空間給標頭!", NULL); free(buf); return(-1); } @@ -2215,7 +2215,7 @@ if(nlp == NULL){ /* no place to add below? */ if((lp = HALLOC()) == NULL){ - emlwrite("Can't allocate any more lines for header!", NULL); + emlwrite("無法再配置更多的空間給標頭!", NULL); free(buf); return(-1); } @@ -2248,7 +2248,7 @@ if(strlen(buf) && !nlp){ if((lp = HALLOC()) == NULL){ - emlwrite("Can't allocate any more lines for header!",NULL); + emlwrite("無法再配置更多的空間給標頭!",NULL); free(buf); return(-1); } @@ -2550,14 +2550,14 @@ if(level < 0 || !headents[level].name){ (*term.t_beep)(); - emlwrite("Sorry, I can't help you with that.", NULL); + emlwrite("很抱歉,關於那個我無法幫得上忙。", NULL); sleep(2); return(FALSE); } - sprintf(buf, "Help for %s %.40s Field", - (Pmaster->pine_flags & MDHDRONLY) ? "Address Book" - : "Composer", + sprintf(buf, "%s欄位%.40s的輔助說明", + (Pmaster->pine_flags & MDHDRONLY) ? "地址簿" + : "編輯器", headents[level].name); saved_state = save_pico_state(); (*Pmaster->helper)(headents[level].help, buf, 1); @@ -3207,7 +3207,7 @@ } if((sbuf=(char *)malloc((unsigned) i)) == NULL){ - emlwrite("Can't malloc space to expand address", NULL); + emlwrite("無法配置記憶體空間以展開地址", NULL); return(-1); } @@ -3264,7 +3264,7 @@ if(!arg){ headarg = arg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!arg){ - emlwrite("Can't malloc space for fcc", NULL); + emlwrite("無法配置記憶體空間給 fcc", NULL); return(-1); } else{ @@ -3277,7 +3277,7 @@ else{ nextarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!nextarg){ - emlwrite("Can't malloc space for fcc", NULL); + emlwrite("無法配置記憶體空間給 fcc", NULL); return(-1); } else{ @@ -3293,7 +3293,7 @@ if(!e->sticky){ line = e->hd_text; if(!(arg->tptr=(char *)malloc(strlen(line->text) + 1))){ - emlwrite("Can't malloc space for fcc", NULL); + emlwrite("無法配置記憶體空間給 fcc", NULL); return(-1); } else @@ -3310,7 +3310,7 @@ if(!headarg){ headarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!headarg){ - emlwrite("Can't malloc space", NULL); + emlwrite("無法配置記憶體空間", NULL); return(-1); } else{ @@ -3636,7 +3636,7 @@ if(ksize()){ if((bp = buf = (char *)malloc(ksize()+5)) == NULL){ - emlwrite("Can't malloc space for saved text", NULL); + emlwrite("無法配置保存文字的記憶體空間", NULL); return(FALSE); } } @@ -3670,7 +3670,7 @@ work_buf_len = strlen(ods.cur_l->text) + buf_len; work_buf = (char *) malloc((work_buf_len + 1) * sizeof(char)); if (work_buf == NULL) { - emlwrite("Can't malloc space for saved text", NULL); + emlwrite("無法配置保存文字的記憶體空間", NULL); return(FALSE); } @@ -3895,9 +3895,9 @@ if(Pmaster && Pmaster->exit_label) menu_header[SEND_KEY].label = Pmaster->exit_label; else if(gmode & (MDVIEW | MDHDRONLY)) - menu_header[SEND_KEY].label = (gmode & MDHDRONLY) ? "eXit/Save" : "eXit"; + menu_header[SEND_KEY].label = (gmode & MDHDRONLY) ? "離開/儲存" : "離開"; else - menu_header[SEND_KEY].label = "Send"; + menu_header[SEND_KEY].label = "送出"; if(gmode & MDVIEW){ menu_header[CUT_KEY].name = NULL; @@ -3918,14 +3918,14 @@ menu_header[RICH_KEY].name = NULL; } else{ - menu_header[RICH_KEY].label = "Rich Hdr"; + menu_header[RICH_KEY].label = "完整標頭"; menu_header[RICH_KEY].name = "^R"; } if(gmode & MDHDRONLY){ if(headents[ods.cur_e].fileedit){ menu_header[PONE_KEY].name = "^_"; - menu_header[PONE_KEY].label = "Edit File"; + menu_header[PONE_KEY].label = "編輯檔案"; } else menu_header[PONE_KEY].name = NULL; @@ -3934,7 +3934,7 @@ } else{ menu_header[PONE_KEY].name = "^O"; - menu_header[PONE_KEY].label = "Postpone"; + menu_header[PONE_KEY].label = "暫緩"; menu_header[ATT_KEY].name = "^J"; } @@ -4005,7 +4005,7 @@ *headents[i].realaddr = bufp; } else{ - emlwrite("Can't make room to pack header field.", NULL); + emlwrite("無法配置包裝表頭欄位的記憶體空間。", NULL); retval = FALSE; } } --- pico/browse.c.orig Sat Jun 12 05:50:29 2004 +++ pico/browse.c Fri Oct 7 21:53:28 2005 @@ -137,12 +137,12 @@ static KEYMENU menu_browse[] = { - {"?", "Get Help", KS_SCREENHELP}, {NULL, NULL, KS_NONE}, - {NULL, NULL, KS_NONE}, {"-", "Prev Pg", KS_PREVPAGE}, - {"D", "Delete", KS_NONE}, {"C","Copy", KS_NONE}, + {"?", "輔助說明", KS_SCREENHELP}, {NULL, NULL, KS_NONE}, + {NULL, NULL, KS_NONE}, {"-", "上一頁", KS_PREVPAGE}, + {"D", "刪除", KS_NONE}, {"C","複製", KS_NONE}, {NULL, NULL, KS_NONE}, {NULL, NULL, KS_NONE}, - {"W", "Where is", KS_NONE}, {"Spc", "Next Pg", KS_NEXTPAGE}, - {"R", "Rename", KS_NONE}, {NULL, NULL, KS_NONE} + {"W", "搜尋", KS_NONE}, {"Spc", "下一頁", KS_NEXTPAGE}, + {"R", "更名", KS_NONE}, {NULL, NULL, KS_NONE} }; #define QUIT_KEY 1 #define EXEC_KEY 2 @@ -351,7 +351,7 @@ child[0] = '\0'; if((gmode&MDTREE) && !in_oper_tree(dir)){ - emlwrite("\007Can't read outside of %s in restricted mode", opertree); + emlwrite("\007無法在限制模式中讀取 %s 以外的東西", opertree); sleep(2); return(0); } @@ -453,7 +453,7 @@ else{ if(timeo && (c == NODATA || time_to_check())) if(pico_new_mail()) - emlwrite("You may possibly have new mail.", NULL); + emlwrite("您可能有新信件。", NULL); } if(km_popped) @@ -729,7 +729,7 @@ gmp->current->fname); /* make sure selected isn't a directory or executable */ if(!LikelyASCII(child)){ - emlwrite("Can't edit non-text file. Try Launch.", NULL); + emlwrite("無法讀取非文字檔。試試 \"啟動\"。", NULL); break; } @@ -759,22 +759,22 @@ return(0); } - emlwrite("\007Unknown command '%c'", (void *)c); + emlwrite("\007未知的命令 '%c'", (void *)c); break; case 'x': /* toggle selection */ case 'X': if(!(gmp->flags & FB_LMODE)){ if(gmp->flags & FB_LMODEPOS) - emlwrite("\007Type L command to use ListMode", NULL); + emlwrite("\007以 'L' 使用列表模式", NULL); else - emlwrite("\007Unknown command '%c'", (void *)c); + emlwrite("\007未知的命令 '%c'", (void *)c); break; } if(gmp->current->mode == FIODIR){ - emlwrite("\007Can't Set directories", NULL); + emlwrite("\007無法設定目錄", NULL); break; } @@ -795,7 +795,7 @@ * Unless we make it so you can get out of ListMode * once you're in ListMode, this must be an error. */ - emlwrite("\007Already in ListMode", NULL); + emlwrite("\007已經在列表模式中", NULL); break; } else{ @@ -807,7 +807,7 @@ } if(!(gmode&MDBRONLY)){ - emlwrite("\007Unknown command '%c'", (void *)c); + emlwrite("\007未知的命令 '%c'", (void *)c); break; } @@ -824,11 +824,11 @@ {NULL, NULL, 0, KS_NONE}, }; - status = mlreply("Command to execute: ", + status = mlreply("欲執行的命令:", tmp, NLINE, QNORML, opts); switch(status){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -839,7 +839,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); break; case ABORT: - emlwrite("Command cancelled", NULL); + emlwrite("命令已取消", NULL); i++; break; case FALSE: @@ -847,7 +847,7 @@ i++; if(tmp[0] == '\0'){ - emlwrite("No command specified", NULL); + emlwrite("尚未下達命令", NULL); break; } @@ -866,12 +866,12 @@ case 'D': if(gmp->current->mode == FIODIR){ /* BUG: if dir is empty it should be deleted */ - emlwrite("\007Can't delete a directory", NULL); + emlwrite("\007無法刪除該目錄", NULL); break; } if(gmode&MDSCUR){ /* not allowed! */ - emlwrite("Delete not allowed in restricted mode",NULL); + emlwrite("無法在限制模式中使用刪除指令",NULL); break; } @@ -882,17 +882,17 @@ while(i++ < 2){ /* verify twice!! */ if(i == 1){ if(fexist(child, "w", (off_t *)NULL) != FIOSUC) - strcpy(tmp, "File is write protected! OVERRIDE"); + strcpy(tmp, "檔案為防寫! 要跳過防寫保護"); else - sprintf(tmp, "Delete file \"%.*s\"", NLINE - 20, child); + sprintf(tmp, "刪除檔案 \"%.*s\"", NLINE - 20, child); } else - strcpy(tmp, "File CANNOT be UNdeleted! Really delete"); + strcpy(tmp, "檔案將無法被反刪除! 確定刪除"); if((status = mlyesno(tmp, FALSE)) != TRUE){ emlwrite((status == ABORT) - ? "Delete Cancelled" - : "File Not Deleted", + ? "取消刪除" + : "檔案沒有被刪除", NULL); break; } @@ -900,7 +900,7 @@ if(status == TRUE){ if(unlink(child) < 0){ - emlwrite("Delete Failed: %s", errstr(errno)); + emlwrite("刪除失敗:%s", errstr(errno)); } else{ /* fix up pointers and redraw */ tp = gmp->current; @@ -977,12 +977,12 @@ while(!i){ - status = mlreply("Directory to go to: ", child, NLINE, QNORML, + status = mlreply("切換至哪一個目錄:", child, NLINE, QNORML, NULL); switch(status){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -990,7 +990,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); break; case ABORT: - emlwrite("Goto cancelled", NULL); + emlwrite("取消切換目錄", NULL); i++; break; case FALSE: @@ -1001,17 +1001,17 @@ strcpy(child, gethomedir(NULL)); if(!compresspath(gmp->dname, child, NLINE)){ - emlwrite("Invalid Directory: %s", child); + emlwrite("無效的目錄:%s", child); break; } if((gmode&MDSCUR) && homeless(child)){ - emlwrite("Restricted mode browsing limited to home directory",NULL); + emlwrite("限制模式中僅能瀏覽 home directory",NULL); break; } if((gmode&MDTREE) && !in_oper_tree(child)){ - emlwrite("\007 Can't go outside of %s in restricted mode", + emlwrite("\007 限制模式中無法離開 %s", opertree); break; } @@ -1028,7 +1028,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); } else - emlwrite("\007Not a directory: \"%s\"", child); + emlwrite("\007\"%s\"不是一個目錄", child); break; default: @@ -1055,10 +1055,10 @@ while(!i){ - switch(status=mlreply("Name of file to add: ", child, NLINE, + switch(status=mlreply("欲新增的檔名:", child, NLINE, QFFILE, NULL)){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -1066,7 +1066,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); break; case ABORT: - emlwrite("Add File Cancelled", NULL); + emlwrite("取消新增檔案", NULL); i++; break; case FALSE: @@ -1081,23 +1081,23 @@ i++; if(child[0] == '\0'){ - emlwrite("No file named. Add Cancelled.", NULL); + emlwrite("未指定檔名,取消新增檔案。", NULL); break; } if(!compresspath(gmp->dname, child, NLINE)){ - emlwrite("Too many ..'s in name", NULL); + emlwrite("檔名中有太多的 .. 了", NULL); break; } if((gmode&MDTREE) && !in_oper_tree(child)){ - emlwrite("\007Restricted mode allows Add in %s only", + emlwrite("\007限制模式中僅允許\在 %s 中新增檔案", opertree); break; } if((status = fexist(child, "w", (off_t *)NULL)) == FIOSUC){ - sprintf(tmp,"File \"%.*s\" already exists!", + sprintf(tmp,"檔案 \"%.*s\" 已存在!", NLINE - 20, child); emlwrite(tmp, NULL); break; @@ -1113,7 +1113,7 @@ } else{ /* highlight new file */ ffclose(); - emlwrite("Added File \"%s\"", child); + emlwrite("新增檔案 \"%s\"", child); if((p = strrchr(child, C_FILESEP)) == NULL){ emlwrite("Problems refiguring browser", NULL); @@ -1161,12 +1161,12 @@ case 'c': /* copy */ case 'C': if(gmp->current->mode == FIODIR){ - emlwrite("\007Can't copy a directory", NULL); + emlwrite("\007無法複製目錄", NULL); break; } if(gmode&MDSCUR){ /* not allowed! */ - emlwrite("Copy not allowed in restricted mode",NULL); + emlwrite("無法在限制模式中複製檔案",NULL); break; } @@ -1175,10 +1175,10 @@ while(!i){ - switch(status=mlreply("Name of new copy: ", child, NLINE, + switch(status=mlreply("新複製檔名:", child, NLINE, QFFILE, NULL)){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -1186,7 +1186,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); break; case ABORT: - emlwrite("Make Copy Cancelled", NULL); + emlwrite("取消複製檔案", NULL); i++; break; case FALSE: @@ -1197,33 +1197,33 @@ i++; if(child[0] == '\0'){ - emlwrite("No destination, file not copied", NULL); + emlwrite("未指定目地檔名,檔案沒有被複製。", NULL); break; } if(!strcmp(gmp->current->fname, child)){ - emlwrite("\007Can't copy file on to itself!", NULL); + emlwrite("\007無法將檔案複製至它自己!", NULL); break; } if(!compresspath(gmp->dname, child, NLINE)){ - emlwrite("Too many ..'s in name", NULL); + emlwrite("檔名中有太多的 .. 了", NULL); break; } if((gmode&MDTREE) && !in_oper_tree(child)){ - emlwrite("\007Restricted mode allows Copy in %s only", + emlwrite("\007限制模式中僅允許\在 %s 中複製檔案", opertree); break; } if((status = fexist(child, "w", (off_t *)NULL)) == FIOSUC){ - sprintf(tmp,"File \"%.*s\" exists! OVERWRITE", + sprintf(tmp,"檔案 \"%.*s\" 已存在! 要覆蓋\嗎", NLINE - 20, child); if((status = mlyesno(tmp, 0)) != TRUE){ emlwrite((status == ABORT) - ? "Make copy cancelled" - : "File Not Renamed", + ? "取消複製" + : "檔案沒有被複製", NULL); break; } @@ -1241,7 +1241,7 @@ break; } else{ /* highlight new file */ - emlwrite("File copied to %s", child); + emlwrite("複製檔案到 %s", child); if((p = strrchr(child, C_FILESEP)) == NULL){ emlwrite("Problems refiguring browser", NULL); @@ -1284,12 +1284,12 @@ i = 0; if(!strcmp(gmp->current->fname, "..")){ - emlwrite("\007Can't rename \"..\"", NULL); + emlwrite("\007無法更改 \"..\" 的名稱", NULL); break; } if(gmode&MDSCUR){ /* not allowed! */ - emlwrite("Rename not allowed in restricted mode",NULL); + emlwrite("無法在限制模式中更改檔案名",NULL); break; } @@ -1297,10 +1297,10 @@ while(!i){ - switch(status=mlreply("Rename file to: ", child, NLINE, QFFILE, + switch(status=mlreply("檔案名稱更改為:", child, NLINE, QFFILE, NULL)){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -1308,7 +1308,7 @@ PaintBrowser(gmp, 0, &crow, &ccol); break; case ABORT: - emlwrite("Rename cancelled", NULL); + emlwrite("取消更改檔案名稱", NULL); i++; break; case FALSE: @@ -1321,12 +1321,12 @@ } if(!compresspath(gmp->dname, child, NLINE)){ - emlwrite("Too many ..'s in name", NULL); + emlwrite("檔名中有太多的 .. 了", NULL); break; } if((gmode&MDTREE) && !in_oper_tree(child)){ - emlwrite("\007Restricted mode allows Rename in %s only", + emlwrite("\007限制模式中僅允許\在 %s 中更改檔名", opertree); break; } @@ -1334,13 +1334,13 @@ status = fexist(child, "w", (off_t *)NULL); if(status == FIOSUC || status == FIOFNF){ if(status == FIOSUC){ - sprintf(tmp,"File \"%.*s\" exists! OVERWRITE", + sprintf(tmp,"檔案 \"%.*s\" 已存在! 要覆蓋\嗎", NLINE - 20, child); if((status = mlyesno(tmp, FALSE)) != TRUE){ emlwrite((status == ABORT) - ? "Rename cancelled" - : "Not Renamed", + ? "取消更名" + : "檔案沒有被更名", NULL); break; } @@ -1350,7 +1350,7 @@ gmp->current->fname); if(rename(tmp, child) < 0){ - emlwrite("Rename Failed: %s", errstr(errno)); + emlwrite("更名失敗:%s", errstr(errno)); } else{ if((p = strrchr(child, C_FILESEP)) == NULL){ @@ -1409,7 +1409,7 @@ if((gmode&MDTREE) && !in_oper_tree(tmp)){ emlwrite( - "\007Can't visit parent in restricted mode", + "\007無法在限制模式中檢視上層目錄", NULL); break; } @@ -1430,7 +1430,7 @@ strcpy(tmp, S_FILESEP); #endif else{ - emlwrite("\007Can't move up a directory", + emlwrite("\007無法切換至上一層目錄", NULL); break; } @@ -1471,12 +1471,12 @@ PlaceCell(gmp, gmp->current, &row, &col); } else - emlwrite("\007Problem finding dir \"%s\"",child); + emlwrite("\007搜尋目錄 \"%s\" 時出了問題",child); } PaintBrowser(gmp, 0, &crow, &ccol); if(!*child) - emlwrite("Select/View \".. parent dir\" to return to previous directory.", + emlwrite("以 [選擇]/[檢視] \".. parent dir\" 回到前一個目錄。", NULL); break; @@ -1556,7 +1556,7 @@ switch(readpattern("File name to find", FALSE)){ case HELPCH: - emlwrite("\007No help yet!", NULL); + emlwrite("\007尚無輔助說明!", NULL); /* remove break and sleep after help text is installed */ sleep(3); break; @@ -1587,10 +1587,10 @@ } while(tp->next); - emlwrite("Searched to end of directory", NULL); + emlwrite("搜尋至目錄結尾", NULL); } else - emlwrite("Searched to start of directory", NULL); + emlwrite("搜尋至目錄起始", NULL); if(tp){ PlaceCell(gmp, gmp->current, &row, &col); @@ -1609,7 +1609,7 @@ i++; /* make sure we jump out */ break; case ABORT: - emlwrite("Whereis cancelled", NULL); + emlwrite("取消搜尋", NULL); i++; break; case FALSE: @@ -1633,7 +1633,7 @@ mlerase(); } else - emlwrite("\"%s\" not found", pat); + emlwrite("找不到 \"%s\"", pat); i++; break; @@ -1655,11 +1655,11 @@ default: /* what? */ Default: if(c < 0xff) - emlwrite("\007Unknown command: '%c'", (void *) c); + emlwrite("\007未知的命令:'%c'", (void *) c); else if(c & CTRL) - emlwrite("\007Unknown command: ^%c", (void *)(c&0xff)); + emlwrite("\007未知的命令:^%c", (void *)(c&0xff)); else - emlwrite("\007Unknown command", NULL); + emlwrite("\007未知的命令", NULL); case NODATA: /* no op */ break; } @@ -1692,7 +1692,7 @@ errbuf[0] = '\0'; if((mp=(struct bmaster *)malloc(sizeof(struct bmaster))) == NULL){ - emlwrite("\007Can't malloc space for master filename cell", NULL); + emlwrite("\007無法配置記憶體空間給 master filename cell", NULL); return(NULL); } @@ -1719,7 +1719,7 @@ mp->longest = 5; /* .. must be labeled! */ mp->flags = fb_flags; - emlwrite("Building file list of %s...", mp->dname); + emlwrite("正在建立 %s 的檔案列表...", mp->dname); if((mp->names = getfnames(mp->dname, NULL, &nentries, errbuf)) == NULL){ free((char *) mp); @@ -1738,7 +1738,7 @@ * easily be made a user option later on... */ if((filtnames=(char **)malloc((nentries+1) * sizeof(char *))) == NULL){ - emlwrite("\007Can't malloc space for name array", NULL); + emlwrite("\007無法配置記憶體空間給 name array", NULL); zotmaster(&mp); return(NULL); } @@ -1790,7 +1790,7 @@ while(nentries--){ /* stat filtered files */ /* get a new cell */ if((ncp=(struct fcell *)malloc(sizeof(struct fcell))) == NULL){ - emlwrite("\007Can't malloc cells for browser!", NULL); + emlwrite("\007無法配置記憶體空間給 browser!", NULL); zotfcells(mp->head); /* clean up cells */ free((char *) filtnames); free((char *) mp); @@ -2091,31 +2091,31 @@ BrowserKeys() { menu_browse[QUIT_KEY].name = (gmode&MDBRONLY) ? "Q" : "E"; - menu_browse[QUIT_KEY].label = (gmode&MDBRONLY) ? "Quit" : "Exit Brwsr"; + menu_browse[QUIT_KEY].label = (gmode&MDBRONLY) ? "離開" : "離開瀏覽器"; menu_browse[GOTO_KEY].name = (gmode&MDGOTO) ? "G" : NULL; - menu_browse[GOTO_KEY].label = (gmode&MDGOTO) ? "Goto" : NULL; + menu_browse[GOTO_KEY].label = (gmode&MDGOTO) ? "切換" : NULL; if(gmode & MDBRONLY){ menu_browse[EXEC_KEY].name = "L"; - menu_browse[EXEC_KEY].label = "Launch"; + menu_browse[EXEC_KEY].label = "啟動"; menu_browse[SELECT_KEY].name = "V"; - menu_browse[SELECT_KEY].label = "[View]"; + menu_browse[SELECT_KEY].label = "[檢視]"; menu_browse[PICO_KEY].name = "E"; - menu_browse[PICO_KEY].label = "Edit"; + menu_browse[PICO_KEY].label = "編輯"; } else{ menu_browse[SELECT_KEY].name = "S"; - menu_browse[SELECT_KEY].label = "[Select]"; + menu_browse[SELECT_KEY].label = "[選擇]"; menu_browse[PICO_KEY].name = "A"; - menu_browse[PICO_KEY].label = "Add"; + menu_browse[PICO_KEY].label = "新增"; if(gmp && gmp->flags & FB_LMODEPOS){ if(gmp && gmp->flags & FB_LMODE){ /* ListMode is already on */ menu_browse[EXEC_KEY].name = "X"; - menu_browse[EXEC_KEY].label = "Set/Unset"; + menu_browse[EXEC_KEY].label = "設定/解除"; } else{ /* ListMode is possible */ menu_browse[EXEC_KEY].name = "L"; - menu_browse[EXEC_KEY].label = "ListMode"; + menu_browse[EXEC_KEY].label = "列表模式"; } } else{ /* No ListMode possible */ @@ -2230,7 +2230,7 @@ if((tp = tp->next) == NULL){ /* above top? */ if(secondtry++){ - emlwrite("\007Internal error: can't find fname cell", NULL); + emlwrite("\007內部錯誤: 找不到 fname cell", NULL); return(-1); } else{ @@ -2405,10 +2405,10 @@ if(!p) /* no suitable length! */ p = &dir[l-(term.t_ncol-i-19)]; - sprintf(buf, "%s Dir ...%s", (gmode&MDBRONLY) ? "" : " BROWSER ", p); + sprintf(buf, "%s 目錄 ...%s", (gmode&MDBRONLY) ? "" : " BROWSER ", p); } else - sprintf(buf,"%s Dir: %s", (gmode&MDBRONLY) ? "" : " BROWSER ", dir); + sprintf(buf,"%s 目錄: %s", (gmode&MDBRONLY) ? "" : " BROWSER ", dir); if(i < j) /* keep it centered */ j = j - i; /* as long as we can */ @@ -2548,18 +2548,18 @@ if((line = (buf[i] == '\n') ? 0 : line + 1) >= LA_LINE_LIMIT || !buf[i]){ rv = FALSE; - emlwrite("Can't display non-text file. Try \"Launch\".", + emlwrite("無法顯示非文字檔。試試 \"啟動\"。", NULL); break; } } else - emlwrite("Can't read file: %s", file); + emlwrite("無法讀取檔案:%s", file); fclose(fp); } else - emlwrite("Can't open file: %s", file); + emlwrite("無法開啟檔案:%s", file); return(rv); } --- pine/osdep/termin.gen.orig Thu Dec 2 02:56:45 2004 +++ pine/osdep/termin.gen Fri Oct 7 21:53:28 2005 @@ -57,11 +57,10 @@ if(m && sp_flagged(m, SP_LOCKED) && sp_flagged(m, SP_USERFLDR) && sp_expunge_count(m)){ fname = STREAMNAME(m); - q_status_message3(SM_ORDER, 3, 3, - "%s message%s expunged from folder \"%s\"", - long2string(sp_expunge_count(m)), - plural(sp_expunge_count(m)), - pretty_fn(fname)); + q_status_message2(SM_ORDER, 3, 3, + "自資料匣 \"%s\" 中刪除 %s 封信件", + pretty_fn(fname), + long2string(sp_expunge_count(m))); sp_set_expunge_count(m, 0L); display_message('x'); } @@ -88,7 +87,7 @@ int winner = 0; if(ps_global->post->status < 0){ - q_status_message(SM_ORDER | SM_DING, 3, 3, "Abysmal failure!"); + q_status_message(SM_ORDER | SM_DING, 3, 3, "徹底失敗!"); } else{ (void) pine_send_status(ps_global->post->status, @@ -101,7 +100,7 @@ if(!winner) q_status_message(SM_ORDER, 0, 3, - "Re-send via \"Compose\" then \"Yes\" to \"Continue INTERRUPTED?\""); + "由 \"編修\" 再回答 \"是\" 來繼續重送 \"上次中斷的信件?\""); if(ps_global->post->fcc) fs_give((void **) &ps_global->post->fcc); @@ -132,8 +131,8 @@ static struct key oe_keys[] = - {{"^G","Help",KS_SCREENHELP}, {"^C","Cancel",KS_NONE}, - {"^T","xxx",KS_NONE}, {"Ret","Accept",KS_NONE}, + {{"^G","輔助說明",KS_SCREENHELP}, {"^C","取消",KS_NONE}, + {"^T","xxx",KS_NONE}, {"Ret","同意",KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, --- pine/osdep/print.orig Tue Sep 13 06:04:25 2005 +++ pine/osdep/print Fri Oct 7 21:53:28 2005 @@ -40,12 +40,12 @@ HelpType help; char **list; static ESCKEY_S ekey[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, - {ctrl('P'), 10, "^P", "Prev Printer"}, - {ctrl('N'), 11, "^N", "Next Printer"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, + {ctrl('P'), 10, "^P", "前一印表機"}, + {ctrl('N'), 11, "^N", "下一印表機"}, {-2, 0, NULL, NULL}, - {'c', 'c', "C", "CustomPrint"}, + {'c', 'c', "C", "自定印表機"}, {KEY_UP, 10, "", ""}, {KEY_DOWN, 11, "", ""}, {-1, 0, NULL, NULL}}; @@ -62,7 +62,7 @@ if(ps_global->VAR_PRINTER == NULL){ q_status_message(SM_ORDER | SM_DING, 3, 5, - "No printer has been chosen. Use SETUP on main menu to make choice."); + "尚未選擇印表機。請用主選單中的設定來選擇。"); return(-1); } @@ -140,7 +140,7 @@ switch(cmd){ case 'y': q_status_message1(SM_ORDER, 0, 9, - "Printing with command \"%s\"", command); + "正以 \"%s\" 命令列印中", command); done++; break; @@ -177,7 +177,7 @@ if(trailer) fs_give((void **)&trailer); - sprintf(prompt, "Enter custom command : "); + sprintf(prompt, "輸入自定的命令:"); command[0] = '\0'; rc = 1; help = NO_HELP; @@ -197,13 +197,13 @@ removing_trailing_white_space(command); removing_leading_white_space(command); q_status_message1(SM_ORDER, 0, 9, - "Printing with command \"%s\"", command); + "正以 \"%s\" 命令列印中", command); } } } if(cmd == 'x' || cmd == 'n'){ - q_status_message(SM_ORDER, 0, 2, "Print cancelled"); + q_status_message(SM_ORDER, 0, 2, "取消列印"); if(init) fs_give((void **)&init); @@ -226,7 +226,7 @@ || strucmp(command, wname) == 0){ /*----------- Attached printer ---------*/ q_status_message(SM_ORDER, 0, 9, - "Printing to attached desktop printer..."); + "正列印至桌上印表機..."); display_message('x'); xonxoff_proc(1); /* make sure XON/XOFF used */ crlf_proc(1); /* AND LF->CR xlation */ @@ -274,7 +274,7 @@ } q_status_message1(SM_ORDER | SM_DING, 3, 4, - "Error opening printer: %s", + "印表機開啟錯誤:%s", error_description(errno)); dprint(2, (debugfile, "Error popening printer \"%s\"\n", error_description(errno))); @@ -337,7 +337,7 @@ fs_give((void **)&ps_global->print); - q_status_message(SM_ASYNC, 0, 3, "Print command completed"); + q_status_message(SM_ASYNC, 0, 3, "列印指令完成"); display_message('x'); } --- pine/osdep/os-bsf.h.orig Sat May 24 00:05:21 2003 +++ pine/osdep/os-bsf.h Fri Oct 7 21:53:29 2005 @@ -74,7 +74,7 @@ default-composer-hdrs or customized-hdrs to get at it. Instead of defining NEVER_ALLOW_CHANGING_FROM, an easier way of preventing From changing is to put the feature "no-allow-changing-from" in the - /usr/local/lib/pine.conf.fixed file. + /usr/local/etc/pine.conf.fixed file. ----*/ /* #define NEVER_ALLOW_CHANGING_FROM */ @@ -163,10 +163,10 @@ /*----- System-wide config file ----------------------------------------*/ #ifndef SYSTEM_PINERC -#define SYSTEM_PINERC "/usr/local/lib/pine.conf" +#define SYSTEM_PINERC "/usr/local/etc/pine.conf" #endif #ifndef SYSTEM_PINERC_FIXED -#define SYSTEM_PINERC_FIXED "/usr/local/lib/pine.conf.fixed" +#define SYSTEM_PINERC_FIXED "/usr/local/etc/pine.conf.fixed" #endif @@ -266,7 +266,7 @@ investigated. Users tend to go in and out of Pine a few times and there is one file for each pine invocation ----*/ -#define NUMDEBUGFILES 4 +#define NUMDEBUGFILES 0 /*---------------------------------------------------------------------- The default debug level to set (approximate meanings): --- pine/osdep/expnfldr.orig Fri Oct 10 03:48:35 2003 +++ pine/osdep/expnfldr Fri Oct 7 21:53:28 2005 @@ -37,14 +37,14 @@ } else if(ps_global->restricted && (strindex("./~", temp_filename[0]) != NULL || srchstr(temp_filename,"/../"))){ - q_status_message(SM_ORDER, 0, 3, "Can only open local folders"); + q_status_message(SM_ORDER, 0, 3, "僅能開啟本地的檔案匣"); return(0); } else if(temp_filename[0] == '*') { strncpy(filename, temp_filename, len-1); filename[len-1] = '\0'; } else if(ps_global->VAR_OPER_DIR && srchstr(temp_filename,"..")){ q_status_message(SM_ORDER, 0, 3, - "\"..\" not allowed in folder name"); + "檔案匣名稱中不允許\有 \"..\""); return(0); } else if (temp_filename[0] == '~'){ if(fnexpand(temp_filename, sizeof(temp_filename)) == NULL) { @@ -52,7 +52,7 @@ if(p != NULL) *p = '\0'; q_status_message1(SM_ORDER, 3, 3, - "Error expanding folder name: \"%s\" unknown user", + "檔案匣展開錯誤:\"%s\" 未知的使用者", temp_filename); return(0); } --- pine/osdep/execview.orig Thu Dec 18 06:14:37 2003 +++ pine/osdep/execview Fri Oct 7 21:53:28 2005 @@ -51,14 +51,14 @@ if(syspipe = open_system_pipe(command, r_file_h, NULL, mode, 0)){ close_system_pipe(&syspipe, NULL, 0); if(needsterminal == 1) - q_status_message(SM_ORDER, 0, 4, "VIEWER command completed"); + q_status_message(SM_ORDER, 0, 4, "VIEWER 命令完成"); else if(needsterminal == 2) - display_output_file(result_file, "VIEWER", " command result", 1); + display_output_file(result_file, "VIEWER", " 命令結果", 1); else - display_output_file(result_file, "VIEWER", " command launched", 1); + display_output_file(result_file, "VIEWER", " 命令已啟動", 1); } else - q_status_message1(SM_ORDER, 3, 4, "Cannot spawn command : %s", cmd); + q_status_message1(SM_ORDER, 3, 4, "無法起始命令:%s", cmd); fs_give((void **)&command); if(result_file) --- pine/status.c.orig Tue Sep 13 06:04:25 2005 +++ pine/status.c Fri Oct 7 21:53:27 2005 @@ -73,7 +73,7 @@ static struct key modal_message_keys[] = {NULL_MENU, NULL_MENU, - {"Ret","Finished",{MC_EXIT,2,{ctrl('m'),ctrl('j')}},KS_NONE}, + {"Ret","完畢",{MC_EXIT,2,{ctrl('m'),ctrl('j')}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1109,8 +1109,8 @@ * want_to's array passed to radio_buttions... */ static ESCKEY_S yorn[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, {-1, 0, NULL, NULL} }; @@ -1394,7 +1394,7 @@ /* if shown, always at position 0 */ if(help_text != NO_HELP || flags & RB_RET_HELP){ rb_keymenu.keys[0].name = "?"; - rb_keymenu.keys[0].label = "Help"; + rb_keymenu.keys[0].label = "輔助說明"; setbitn(0, bitmap); fkey_table[0] = ctrl('G'); start++; @@ -1402,7 +1402,7 @@ if(on_ctrl_C){ rb_keymenu.keys[1].name = "^C"; - rb_keymenu.keys[1].label = "Cancel"; + rb_keymenu.keys[1].label = "取消"; setbitn(1, bitmap); fkey_table[1] = ctrl('C'); start++; --- pine/signals.c.orig Fri Nov 5 06:31:46 2004 +++ pine/signals.c Fri Oct 7 21:53:27 2005 @@ -467,8 +467,8 @@ mbox = mb.mailbox; q_status_message1(SM_ASYNC, 3, 7, - "Another email program is accessing %.20s. Session now Read-Only.", - short_str((mbox && *mbox) ? mbox : "folder", + "其他的電子郵件程式正在存取 %.20s。這個工作階段進入唯讀狀態。", + short_str((mbox && *mbox) ? mbox : "信件匣", mboxbuf, 19, FrontDots)); dprint(1, (debugfile, "** folder %s went read-only **\n\n", stream->mailbox)); @@ -609,7 +609,7 @@ return 0; dprint(9,(debugfile, "busy_alarm(%d, %s, %p, %d)\n", - seconds, msg ? msg : "Busy", pc_func, init_msg)); + seconds, msg ? msg : "請稍後", pc_func, init_msg)); /* * If we're already busy'ing, and we don't have something special, @@ -635,7 +635,7 @@ final_message = 1; } else{ - strcpy(busy_message, "Busy"); + strcpy(busy_message, "請稍後"); final_message = 0; } --- pine/send.c.orig Tue Sep 13 06:04:25 2005 +++ pine/send.c Fri Oct 7 22:02:54 2005 @@ -229,17 +229,17 @@ * Various useful strings */ #define INTRPT_PMT \ - "Continue INTERRUPTED composition (answering \"n\" won't erase it)" + "繼續編輯上次中斷的文章嗎(回答 \"否\" 將不會刪除它)" #define PSTPND_PMT \ - "Continue postponed composition (answering \"No\" won't erase it)" + "繼續編輯遭暫緩的文章嗎(回答 \"否\" 將不會刪除它)" #define FORM_PMT \ - "Start composition from Form Letter Folder" + "開始自來源信件匣中編輯" #define PSTPN_FORM_PMT \ - "Save to Postponed or Form letter folder? " + "要存至「暫緩」或「來源」信件匣?" #define POST_PMT \ - "Posted message may go to thousands of readers. Really post" + "這篇文章可能被數以千計的讀者閱\讀,確定要刊登嗎" #define INTR_DEL_PMT \ - "Deleted messages will be removed from folder after use. Proceed" + "刪除的信件於 Pine 使用後將被移出檔案匣。確定刪除嗎" #if defined(DOS) || defined(OS2) #define POST_PERM_GRIPE \ @@ -290,7 +290,7 @@ #define REDRAFT_PPND 0x01 #define REDRAFT_DEL 0x02 -#define COMPOSE_MAIL_TITLE "COMPOSE MESSAGE" +#define COMPOSE_MAIL_TITLE "編輯信件" /* * Phone home hash controls @@ -358,7 +358,7 @@ /* Setup role */ if(role_select_screen(pine_state, &role, MC_COMPOSE) < 0){ - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); pine_state->next_screen = prev_screen; pine_state->redrawer = redraw; return; @@ -574,7 +574,7 @@ ps_global->redrawer = NULL; ps_global->next_screen = SCREEN_FUN_NULL; if(role_select_screen(ps_global, &role, MC_COMPOSE) < 0){ - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); ps_global->next_screen = prev_screen; ps_global->redrawer = redraw; return; @@ -590,7 +590,7 @@ break; case 'x': q_status_message(SM_ORDER, 0, 3, - "Composition cancelled"); + "取消編輯"); return; break; default: @@ -632,14 +632,14 @@ pine_mail_close(stream); if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, - "Composition cancelled"); + "取消編輯"); return; } } } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't open Interrupted mailbox: %.200s", + "無法開被中斷的信箱:%.200s", file_path); if(stream) pine_mail_close(stream); @@ -721,14 +721,14 @@ if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, - "Composition cancelled"); + "取消編輯"); done++; } } } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't open Postponed mailbox: %.200s", mbox); + "無法開遭暫緩的信箱:%.200s", mbox); if(stream) pine_mail_close(stream); } @@ -736,7 +736,7 @@ else{ if(F_ON(F_ALT_COMPOSE_MENU, ps_global)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Postponed message folder doesn't exist!"); + "暫緩的信件匣不存在!"); return; } } @@ -822,7 +822,7 @@ if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, - "Composition cancelled"); + "取消編輯"); done++; } } @@ -832,7 +832,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't open form letter folder: %.200s", mbox); + "無法開啟表格信件匣:%.200s", mbox); if(stream) pine_mail_close(stream); } @@ -840,7 +840,7 @@ else{ if(F_ON(F_ALT_COMPOSE_MENU, ps_global)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Form letter folder doesn't exist!"); + "來源信件匣不存在!"); return; } } @@ -888,14 +888,14 @@ role = combine_inherited_role(role); else{ /* cancel reply */ role = NULL; - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); return; } } } if(role) - q_status_message1(SM_ORDER, 3, 4, "Composing using role \"%.200s\"", + q_status_message1(SM_ORDER, 3, 4, "以 \"%.200s\" 的身份編輯", role->nick); /* @@ -1069,8 +1069,8 @@ */ if(!stream->nmsgs){ q_status_message1(SM_ORDER | SM_DING, 3, 5, - "Empty folder! No messages really %.200s!", - (REDRAFT_PPND&flags) ? "postponed" : "interrupted"); + "空的信件匣!沒有信件真正被%.200s!", + (REDRAFT_PPND&flags) ? "暫緩" : "中斷"); return(redraft_cleanup(streamp, FALSE, flags)); } else if(stream == ps_global->mail_stream){ @@ -1100,10 +1100,10 @@ if(count_flagged(stream, F_DEL) && want_to(INTR_DEL_PMT, 'n', 0, NO_HELP, WT_NORM) == 'n'){ q_status_message1(SM_ORDER, 3, 3, - "Undelete %.200s, and then continue message", + "自%.200s復原刪除,並繼續該信件", (REDRAFT_PPND&flags) - ? "messages to remain postponed" - : "form letters you want to keep"); + ? "繼續暫緩的信件中" + : "您想保留的信件中"); continue; } @@ -1113,7 +1113,7 @@ clear_index_cache(); if(rv){ - q_status_message(SM_ORDER, 0, 3, "Composition cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消編輯"); (void) redraft_cleanup(streamp, FALSE, flags); return(0); /* special case */ } @@ -1619,7 +1619,7 @@ if(b->type == TYPEMULTIPART){ if(strucmp(b->subtype, "mixed")){ q_status_message1(SM_INFO, 3, 4, - "Converting Multipart/%.200s to Multipart/Mixed", + "正在轉換 Multipart/%.200s 至 Multipart/Mixed", b->subtype); fs_give((void **)&b->subtype); b->subtype = cpystr("mixed"); @@ -1627,7 +1627,7 @@ } else{ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Unable to resume type %.200s/%.200s message", + "無法繼續形態為 %.200s/%.200s 的信件", body_types[b->type], b->subtype); return(redraft_cleanup(streamp, TRUE, flags)); } @@ -1641,7 +1641,7 @@ set_mime_type_by_grope(&part->body, NULL); if(part->body.type != TYPETEXT){ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Unable to resume; first part is non-text: %.200s/%.200s", + "無法繼續;第一部份非純文字:%.200s/%.200s", body_types[part->body.type], part->body.subtype); return(redraft_cleanup(streamp, TRUE, flags)); @@ -1736,8 +1736,8 @@ if(do_the_broach){ q_status_message2(SM_ORDER, 3, 7, - "No more %.200s, returning to \"%.200s\"", - (REDRAFT_PPND&flags) ? "postponed messages" + "沒有%.200s,回到 \"%.200s\"", + (REDRAFT_PPND&flags) ? "遭暫緩的信件" : "form letters", ps_global->inbox_name); ps_global->mail_stream = NULL; /* already closed above */ @@ -1749,7 +1749,7 @@ if(!pine_mail_delete(NULL, mbox)) q_status_message1(SM_ORDER|SM_DING, 3, 3, - "Can't delete %.200s", mbox); + "無法刪除:%.200s", mbox); fs_give((void **) &mbox); } @@ -1767,7 +1767,7 @@ { if(background_posting(FALSE)){ q_status_message1(SM_ORDER, 0, 3, - "%.200s folder unavailable while background posting", + "%.200s 信件匣在背景刊登時無法使用", type); return(failure); } @@ -2016,7 +2016,7 @@ if(rc == 1 || (rc == 0 && !answer[0])) { q_status_message(SM_ORDER, 3, 4, - "Send cancelled (User-id must be provided before sending)"); + "取消寄件(寄件前必須提供使用者代號)"); return(0); } @@ -2109,7 +2109,7 @@ if(rc == 1 || (rc == 0 && !answer[0])) { q_status_message(SM_ORDER, 3, 4, - "Send cancelled (Host/domain name must be provided before sending)"); + "取消寄件(寄件前必須提供 主機/領域 名稱)"); return(0); } @@ -2167,7 +2167,7 @@ if(rc == 1 || (rc == 0 && answer[0] == '\0')) { q_status_message(SM_ORDER, 3, 4, - "Send cancelled (SMTP server must be provided before sending)"); + "取消寄件(寄件前必須提供 SMTP 伺服器)"); return(0); } @@ -2194,31 +2194,31 @@ */ static struct headerentry he_template[]={ {"From : ", "From", h_composer_from, 10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}, {"Reply-To: ", "Reply To", h_composer_reply_to, 10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}, {"To : ", "To", h_composer_to, 10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}, {"Cc : ", "Cc", h_composer_cc, 10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}, {"Bcc : ", "Bcc", h_composer_bcc, 10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}, {"Newsgrps: ", "Newsgroups", h_composer_news, 10, 0, NULL, - news_build, NULL, NULL, news_group_selector, "To NwsGrps", NULL, + news_build, NULL, NULL, news_group_selector, "新聞組群列表", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_NONE}, {"Fcc : ", "Fcc", h_composer_fcc, 10, 0, NULL, - NULL, NULL, NULL, folders_for_fcc, "To Fldrs", NULL, + NULL, NULL, NULL, folders_for_fcc, "資料匣列表", NULL, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, KS_NONE}, {"Lcc : ", "Lcc", h_composer_lcc, 10, 0, NULL, - build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"To AddrBk", NULL, + build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"地址簿", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_NONE}, {"Attchmnt: ", "Attchmnt", h_composer_attachment, 10, 0, NULL, - NULL, NULL, NULL, NULL, "To Files", NULL, + NULL, NULL, NULL, NULL, "檔案列表", NULL, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, KS_NONE}, {"Subject : ", "Subject", h_composer_subject, 10, 0, NULL, valid_subject, NULL, NULL, NULL, NULL, NULL, @@ -2268,7 +2268,7 @@ static struct headerentry he_custom_addr_templ={ NULL, NULL, h_composer_custom_addr,10, 0, NULL, - build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL, + build_address, NULL, NULL, addr_book_compose, "地址簿", NULL, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK}; static struct headerentry he_custom_free_templ={ NULL, NULL, h_composer_custom_free,10, 0, NULL, @@ -2601,7 +2601,7 @@ default: q_status_message1(SM_ORDER,3,3, - "Unknown header type %d in pine_simple_send", (void *)pf->type); + "在 pine_simple_send 中出現未知的標頭形態 %d", (void *)pf->type); break; } } @@ -2611,7 +2611,7 @@ ekey[0].ch = ctrl('T'); ekey[0].rval = 2; ekey[0].name = "^T"; - ekey[0].label = "To AddrBk"; + ekey[0].label = "地址簿"; ekey[1].ch = -1; /*---------------------------------------------------------------------- @@ -2735,12 +2735,12 @@ opts[i].ch = 'y'; opts[i].rval = 'y'; opts[i].name = "Y"; - opts[i++].label = "Yes"; + opts[i++].label = "是"; opts[i].ch = 'n'; opts[i].rval = 'n'; opts[i].name = "N"; - opts[i++].label = "No"; + opts[i++].label = "否"; verbose_requested = 0; if(F_ON(F_VERBOSE_POST, ps_global)){ @@ -2787,7 +2787,7 @@ dsn_show = (dsn_requested & DSN_SHOW); sprintf(tmp_20k_buf, "%s%s%s%s%s%sto \"%s\" ? ", - prmpt_cnf ? prmpt_cnf : "Send message ", + prmpt_cnf ? prmpt_cnf : "送信 ", (verbose_requested || dsn_show) ? "(" : "", (verbose_requested) @@ -2944,7 +2944,7 @@ if(!(outgoing->to || outgoing->cc || outgoing->bcc || lmc.so)){ q_status_message(SM_ORDER, 3, 5, - "No recipients specified!"); + "尚未指定收件人!"); continue; } @@ -2987,7 +2987,7 @@ } else if(result == 0){ q_status_message(SM_ORDER,3,5, - "Fcc Failed!. No message saved."); + "Fcc 失敗!未存入任何信件。"); retval = -1; dprint(1, (debugfile, "explicit fcc write failed!\n")); @@ -3034,7 +3034,7 @@ fs_give((void **)&fcc); } else{ - q_status_message(SM_ORDER, 0, 3, "Send cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消寄件"); retval = -1; } } @@ -3062,7 +3062,7 @@ break; case 1: - q_status_message(SM_ORDER, 0, 3, "Send cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消寄件"); done++; retval = -1; break; @@ -3273,7 +3273,7 @@ if(F_OFF(F_COMPOSE_TO_NEWSGRP,ps_global)){ sprintf(prompt, - "Post to current newsgroup (%.100s)", news_group); + "張貼至目前的新聞組群(%.100s)", news_group); ch = want_to(prompt, 'y', 'x', NO_HELP, WT_NORM); } @@ -3315,7 +3315,7 @@ break; case 'x': /* ^C */ - q_status_message(SM_ORDER, 0, 3, "Message cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消信件"); dprint(4, (debugfile, "=== send: cancelled\n")); pbf = save_previous_pbuf; return; @@ -3978,7 +3978,7 @@ default: q_status_message1(SM_ORDER,3,7, - "Unknown header type %d in pine_send", + "在 pine_send 中出現未知的標頭形態 %d", (void *)pf->type); break; } @@ -4005,7 +4005,7 @@ !(role && role->from))){ if(pf->canedit || !he->rich_header) q_status_message(SM_ORDER, 3, 3, - "Not allowed to change header \"From\""); + "不允許\改變標頭 \"From\""); memset(he, 0, (size_t)sizeof(*he)); pf->he = NULL; @@ -4395,7 +4395,7 @@ if((editor_result & COMP_CANCEL) && (F_ON(F_QUELL_DEAD_LETTER, ps_global) || ps_global->deadlets == 0)){ - q_status_message(SM_ORDER, 0, 3, "Message cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消信件"); break; } @@ -4419,7 +4419,7 @@ && (check_addresses(&header) == CA_BAD)){ /*--- Addresses didn't check out---*/ q_status_message(SM_ORDER, 7, 7, - "Not allowed to postpone message until addresses are qualified"); + "直到地址合格之前不允許\暫緩信件"); continue; } @@ -4502,7 +4502,7 @@ if(!so_puts(lmc.so, tmp_20k_buf)){ if(editor_result & COMP_CANCEL) q_status_message2(SM_ORDER | SM_DING, 3, 3, - "Can't write \"%.200s\": %.200s", + "無法寫入 \"%.200s\":%.200s", folder, error_description(errno)); else dprint(1, (debugfile, "* * * CAN'T WRITE %s: %s\n", @@ -4516,7 +4516,7 @@ if(!ps_global->VAR_POSTPONED_FOLDER || !ps_global->VAR_POSTPONED_FOLDER[0]){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "No postponed file defined"); + "沒有已定義的暫緩檔"); continue; } @@ -4550,7 +4550,7 @@ strncpy(folder, ps_global->VAR_POSTPONED_FOLDER, sizeof(folder)-1); folder[sizeof(folder)-1] = '\0'; - strcpy(label, "postponed message"); + strcpy(label, "暫緩信件"); } lmc.so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL); @@ -4808,10 +4808,10 @@ && ps_global->VAR_FORM_FOLDER[0] && !strcmp(folder, ps_global->VAR_FORM_FOLDER)) q_status_message(SM_ORDER, 0, 3, - "Composition saved to Form Letter Folder. Select Compose to send."); + "文章已被存至來源信件匣。選擇「編輯」送出。"); else q_status_message(SM_ORDER, 0, 3, - "Composition postponed. Select Compose to resume."); + "文章已暫緩寄出。選擇「編輯」繼續編修。"); break; /* postpone went OK, get out of here */ } @@ -4822,15 +4822,15 @@ lc = last_cmpnt(folder); q_status_message3(SM_ORDER, 0, 3, - "Message cancelled%.200s%.200s%.200s", - (lc && *lc) ? " and copied to \"" : "", + "已取消信件%.200s%.200s%.200s", + (lc && *lc) ? " 並複製到 \"" : "", (lc && *lc) ? lc : "", - (lc && *lc) ? "\" file" : ""); + (lc && *lc) ? "\" 檔案" : ""); break; } else{ q_status_message(SM_ORDER, 0, 4, - "Continuing composition. Message not postponed or sent"); + "繼續編輯。信件未被暫緩或送出"); body_start = 1; continue; /* postpone failed, jump back in to composer */ } @@ -4847,7 +4847,7 @@ if(outgoing->newsgroups && *outgoing->newsgroups && F_OFF(F_QUELL_EXTRA_POST_PROMPT, ps_global) && want_to(POST_PMT, 'n', 'n', NO_HELP, WT_NORM) == 'n'){ - q_status_message(SM_ORDER, 0, 3, "Message not posted"); + q_status_message(SM_ORDER, 0, 3, "文章未被刊登"); dprint(4, (debugfile, "no post, continuing\n")); continue; } @@ -4856,7 +4856,7 @@ || outgoing->newsgroups)){ if(fcc && fcc[0]){ if(F_OFF(F_AUTO_FCC_ONLY, ps_global) && - want_to("No recipients, really copy only to Fcc ", + want_to("尚未指定收件者,真的僅複製到 Fcc 中嗎", 'n', 'n', h_send_fcc_only, WT_NORM) != 'y') continue; @@ -4864,7 +4864,7 @@ } else{ q_status_message(SM_ORDER, 3, 4, - "No recipients specified!"); + "尚未指定收件者!"); dprint(4, (debugfile, "no recip, continuing\n")); continue; } @@ -4950,8 +4950,8 @@ && !filter_message_text(sending_filter_requested, outgoing, *body, &orig_so, &header)){ q_status_message1(SM_ORDER, 3, 3, - "Problem filtering! Nothing sent%.200s.", - fcc ? " or saved to fcc" : ""); + "過濾器有問題!沒有東西被送出%.200s。", + fcc ? "或存至 fcc" : ""); continue; } @@ -5077,7 +5077,7 @@ } else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){ q_status_message(SM_ORDER, 3, 5, - "Fcc Failed!. No message saved."); + "Fcc 失敗!未存入任何信件。"); dprint(1, (debugfile, "explicit fcc write failed!\n")); result |= P_FCC_LOSE; @@ -5162,7 +5162,7 @@ } else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){ q_status_message(SM_ORDER,3,5, - "Fcc Failed!. No message saved."); + "Fcc 失敗!未存入任何信件。"); dprint(1, (debugfile, "explicit fcc write failed!\n")); result |= P_FCC_LOSE; } @@ -5261,8 +5261,8 @@ int postpone_prompt() { - static ESCKEY_S pstpn_form_opt[] = { {'p', 'p', "P", "Postponed Folder"}, - {'f', 'f', "F", "Form Letter Folder"}, + static ESCKEY_S pstpn_form_opt[] = { {'p', 'p', "P", "暫緩檔案匣"}, + {'f', 'f', "F", "來源信件匣"}, {-1, 0, NULL, NULL} }; return(radio_buttons(PSTPN_FORM_PMT, -FOOTER_ROWS(ps_global), @@ -5423,30 +5423,30 @@ char fbuf[MAILTMPLEN+1]; part1 = (result & P_NEWS_WIN) - ? "posted" + ? "已張貼" : (result & P_NEWS_LOSE) - ? "NOT POSTED" + ? "未張貼" : ""; part2 = ((result & P_NEWS_BITS) && (result & P_MAIL_BITS) && (result & P_FCC_BITS)) ? ", " : ((result & P_NEWS_BITS) && (result & (P_MAIL_BITS | P_FCC_BITS))) - ? " and " + ? " 並 " : ""; part3 = (result & P_MAIL_WIN) - ? "sent" + ? "已被寄出" : (result & P_MAIL_LOSE) - ? "NOT SENT" + ? "未被寄出" : ""; part4 = ((result & P_MAIL_BITS) && (result & P_FCC_BITS)) - ? " and " + ? " 並 " : ""; part5 = ((result & P_FCC_WIN) && !(result & (P_MAIL_WIN | P_NEWS_WIN))) - ? "ONLY copied to " + ? "僅複製到 " : (result & P_FCC_WIN) - ? "copied to " + ? "複製到 " : (result & P_FCC_LOSE) - ? "NOT copied to " + ? "尚未被複製到 " : ""; lenfcc = min(sizeof(fbuf)-1, (result & P_FCC_BITS) ? strlen(fcc_name) : 0); @@ -5456,7 +5456,7 @@ if(need > avail && fixedneed + 3 >= avail){ /* dots on end of fixed, no fcc */ - sprintf(fbuf, "Message %.20s%.20s%.20s%.20s%.20s ", + sprintf(fbuf, "信件 %.20s%.20s%.20s%.20s%.20s ", part1, part2, part3, part4, part5); short_str(fbuf, buf, avail, EndDots); } @@ -5546,17 +5546,17 @@ || (F_ON(F_COMPOSE_REJECTS_UNQUAL, ps_global) && a->host[0] == '@'))){ q_status_message2(SM_ORDER, 4, 7, - "Can't send to address %.200s: %.200s", + "無法寄至 %.200s: %.200s", a->mailbox, (a->host[0] == '.') ? a->host - : "not in addressbook"); + : "不在地址簿中"); return(CA_BAD); } else if(ps_global->restricted && !address_is_us(*pf->addr, ps_global)){ q_status_message(SM_ORDER, 3, 3, - "Restricted demo version of Pine. You may only send mail to yourself"); + "這是 Pine 的展示版。僅能寄信給自己"); return(CA_BAD); } else if(a->mailbox && strucmp(a->mailbox, "mailer-daemon") == 0 @@ -5727,7 +5727,7 @@ if(!(n > 0L && n <= mn_get_total(ps_global->msgmap) && (e = pine_mail_fetchstructure(ps_global->mail_stream, mn_m2raw(ps_global->msgmap, n), &b)))){ - q_status_message(SM_ORDER|SM_DING,3,3,"Error inserting Message"); + q_status_message(SM_ORDER|SM_DING,3,3,"插入信件時發生錯誤"); flush_status_messages(0); return(0L); } @@ -5742,7 +5742,7 @@ /* actually write message text */ if(!format_message(mn_m2raw(ps_global->msgmap, n), e, b, NULL, FM_NEW_MESS | FM_DISPLAY | FM_NOCOLOR | FM_NOINDENT, f)){ - q_status_message(SM_ORDER|SM_DING,3,3,"Error inserting Message"); + q_status_message(SM_ORDER|SM_DING,3,3,"插入信件時發生錯誤"); flush_status_messages(0); rv = 0L; } @@ -5847,12 +5847,12 @@ opts[i].ch = 'y'; opts[i].rval = 'y'; opts[i].name = "Y"; - opts[i++].label = "Yes"; + opts[i++].label = "是"; opts[i].ch = 'n'; opts[i].rval = 'n'; opts[i].name = "N"; - opts[i++].label = "No"; + opts[i++].label = "否"; if(filters){ /* set global_filter_pointer to desired filter or NULL if none */ @@ -5860,12 +5860,12 @@ opts[i].ch = ctrl('P'); opts[i].rval = 10; opts[i].name = "^P"; - opts[i++].label = "Prev Filter"; + opts[i++].label = "前一個過濾器"; opts[i].ch = ctrl('N'); opts[i].rval = 11; opts[i].name = "^N"; - opts[i++].label = "Next Filter"; + opts[i++].label = "下一個過濾器"; if(F_ON(F_FIRST_SEND_FILTER_DFLT, ps_global)) filters = filters->next; @@ -5952,11 +5952,11 @@ lparen = 0; dsn_show = (dsn_requested & DSN_SHOW); - strcpy(tmp_20k_buf, "Send message"); - optp = &tmp_20k_buf[12]; + strcpy(tmp_20k_buf, "送出信件"); + optp = &tmp_20k_buf[8]; if(F_ON(F_NO_FCC_ATTACH, ps_global) && !lmc.text_only) - sstrcpy(&optp, " and Fcc Atmts"); + sstrcpy(&optp, " 與 Fcc 附件?"); if(allow_flowed && !flowing_requested){ if(!lparen){ @@ -5982,12 +5982,12 @@ } if(filters->filter){ - sstrcpy(&optp, "filtered thru \""); + sstrcpy(&optp, "經由過濾器 \""); sstrcpy(&optp, filters->filter); *optp++ = '\"'; } else - sstrcpy(&optp, "unfiltered"); + sstrcpy(&optp, "未經過濾"); } if(verbose_requested || background_requested){ @@ -6001,10 +6001,10 @@ sstrcpy(&optp, "in "); if(verbose_requested) - sstrcpy(&optp, "verbose "); + sstrcpy(&optp, "顯示細節 "); if(background_requested) - sstrcpy(&optp, "background "); + sstrcpy(&optp, "背景送出 "); sstrcpy(&optp, "mode"); } @@ -6049,11 +6049,11 @@ opts[flowing_label].label = flowing_requested ? "NoFlow" : "Flow"; if(verbose_label) - opts[verbose_label].label = verbose_requested ? "Normal" : "Verbose"; + opts[verbose_label].label = verbose_requested ? "通常" : "顯示細節"; if(bg_label) opts[bg_label].label = background_requested - ? "Foreground" : "Background"; + ? "前景" : "背景"; if(fcc_label) opts[fcc_label].label = lmc.text_only ? "Fcc Attchmnts" @@ -6103,11 +6103,11 @@ break; } else if(rv == 'n'){ /* Declined! */ - rstr = "No Message Sent"; + rstr = "沒有任何信件被送出"; break; } else if(rv == 'z'){ /* Cancelled! */ - rstr = "Send Cancelled"; + rstr = "取消送件"; break; } else if(rv == 10){ /* PREVIOUS filter */ @@ -6297,7 +6297,7 @@ if(body->type != TYPEOTHER){ rv = 1; q_status_message3(SM_ORDER, 0, 3, - "File %.200s attached as type %.200s/%.200s", file, + "檔案 %.200s 附加為 %.200s/%.200s", file, body_types[body->type], body->subtype ? body->subtype : rfc822_default_subtype(body->type)); } @@ -6350,7 +6350,7 @@ (void) close_system_pipe(&syspipe, NULL, 0); if((l = name_file_size(fname)) < 0L){ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Error determining size of %.200s: %.200s", fname, + "決定檔案 %.200s大小時發生錯誤:%.200s", fname, fnp = error_description(errno)); dprint(1, (debugfile, "!!! Upload cmd \"%s\" failed for \"%s\": %s\n", @@ -6364,7 +6364,7 @@ return(l >= 0); } else - q_status_message(SM_ORDER | SM_DING, 3, 4, "Error opening pipe"); + q_status_message(SM_ORDER | SM_DING, 3, 4, "開啟管線時發生錯誤"); return(0); } @@ -6392,11 +6392,11 @@ int rv; char *rstr = NULL; char *prompt = - "Cancel message (answering \"Confirm\" will abandon your mail message) ? "; + "取消信件(回答 \"確認\" 將放棄您的郵件)?"; void (*redraw)() = ps_global->redrawer; static ESCKEY_S opts[] = { - {'c', 'c', "C", "Confirm"}, - {'n', 'n', "N", "No"}, + {'c', 'c', "C", "確認"}, + {'n', 'n', "N", "否"}, {'y', 'y', "", ""}, {-1, 0, NULL, NULL} }; @@ -6412,7 +6412,7 @@ break; } else if(rv == 'y'){ - q_status_message(SM_INFO, 1, 3, " Type \"C\" to cancel message "); + q_status_message(SM_INFO, 1, 3, " 輸入 \"C\" 取消信件 "); display_message('x'); } else @@ -6476,7 +6476,7 @@ !strcmp(reply->origmbox, reply->mailbox)))) stream = sp_stream_get(reply->mailbox, SP_MATCH); - we_cancel = busy_alarm(1, "Updating \"Answered\" Flags", NULL, 1); + we_cancel = busy_alarm(1, "正在更新 \"已回覆\" 旗標", NULL, 1); if(!stream){ if(stream = pine_mail_open(NULL, reply->origmbox ? reply->origmbox @@ -6634,7 +6634,7 @@ so_give(&tmpf_so); } else - errstr = "Can't create space for filter temporary file."; + errstr = "無法建立過濾器的暫存檔。"; } else if(include_hdrs){ /* @@ -6690,13 +6690,13 @@ so_give(&tmpf_so); } else - errstr = "Can't open temp file filter wrote."; + errstr = "無法開啟過濾器的暫存檔。"; } else - errstr = "Filter command returned error."; + errstr = "過濾器指令傳回錯誤值。"; } else - errstr = "Can't exec filter text."; + errstr = "無法執行過濾器。"; } else errstr = gf_filter(cmd, key ? filter_session_key() : NULL, @@ -6719,7 +6719,7 @@ if(errstr){ int ch; - fprintf(stdout, "\r\n%s Hit return to continue.", errstr); + fprintf(stdout, "\r\n%s 鍵入 return 繼續。", errstr); fflush(stdout); while((ch = read_char(300)) != ctrl('M') && ch != NO_OP_IDLE) @@ -6814,7 +6814,7 @@ if(tmp_so) so_give(&tmp_so); - q_status_message1(SM_ORDER | SM_DING, 3, 6, "Problem filtering: %.200s", + q_status_message1(SM_ORDER | SM_DING, 3, 6, "過濾過程有問題:%.200s", errstr); dprint(1, (debugfile, "Filter FAILED: %s\n", errstr ? errstr : "?")); @@ -6901,11 +6901,11 @@ (void)pine_simple_send(outgoing, &body, NULL,NULL,NULL,NULL, SS_NULLRP); - q_status_message(SM_ORDER, 0, 3, "Thanks for being counted!"); + q_status_message(SM_ORDER, 0, 3, "感謝您願意被計算為 Pine 的使用者!"); } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Problem creating space for message text."); + "建立訊息文字空間時發生錯誤。"); mail_free_envelope(&outgoing); pine_free_body(&body); @@ -6990,7 +6990,7 @@ if(!pf){ q_status_message(SM_ORDER,3,3, - "Can't send message. No recipients specified!"); + "無法送信。尚未指定收信人!"); return(0); } @@ -6999,7 +6999,7 @@ gf_filter_init(); /* zero piped byte count, 'n */ send_bytes_to_send = send_body_size(body); /* count body bytes */ ps_global->c_client_error[0] = error_buf[0] = '\0'; - we_cancel = busy_alarm(1, "Sending mail", + we_cancel = busy_alarm(1, "正在寄信", send_bytes_to_send ? sent_percent : NULL, 1); /* try posting via local " <-t>" if specified */ @@ -7202,7 +7202,7 @@ struct headerentry *last_he = NULL; sprintf(error_buf, - "Mail not sent. Sending error%s%.40s", + "信件未被寄出。寄件錯誤%s%.40s", (sending_stream && sending_stream->reply) ? ": ": ".", (sending_stream && sending_stream->reply) ? sending_stream->reply : ""); @@ -7275,8 +7275,8 @@ TIME_STAMP("smtp done", 1); } else if(!error_mess){ - sprintf(error_mess = error_buf, "Error sending%.2s%.80s", - ps_global->c_client_error[0] ? ": " : "", + sprintf(error_mess = error_buf, "寄信時發生錯誤%.2s%.80s", + ps_global->c_client_error[0] ? ":" : "", ps_global->c_client_error); } @@ -7285,7 +7285,7 @@ TIME_STAMP("verbose start", 1); fclose(verbose_send_output); verbose_send_output = NULL; - q_status_message(SM_ORDER, 0, 3, "Verbose SMTP output received"); + q_status_message(SM_ORDER, 0, 3, "收到詳細的 SMTP 輸出訊息"); display_output_file(verbose_file, "Verbose SMTP Interaction", NULL, DOF_BRIEF); TIME_STAMP("verbose end", 1); @@ -7375,12 +7375,12 @@ if(folder_index(fcc, *fcc_cntxt, FI_FOLDER) < 0){ if(ps_global->context_list->next) sprintf(tmp_20k_buf, - "Folder \"%.20s\" in <%.30s> doesn't exist. Create", + "信件匣 \"%.20s\" 在 <%.30s> 尚不存在。要新建", strsquish(tmp_20k_buf + 500, fcc, 20), strsquish(tmp_20k_buf + 1000,(*fcc_cntxt)->nickname,30)); else sprintf(tmp_20k_buf, - "Folder \"%s\" doesn't exist. Create", + "信件匣 \"%s\" 尚不存在。要新建", strsquish(tmp_20k_buf + 500, fcc, 40)); if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){ @@ -7408,7 +7408,7 @@ ok++; } else{ - sprintf(tmp_20k_buf,"Folder \"%s\" doesn't exist. Create", + sprintf(tmp_20k_buf,"信件匣 \"%s\" 尚不存在。要新建", strsquish(tmp_20k_buf + 500, fcc, 40)); if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){ ps_global->mm_log_error = 0; @@ -7434,8 +7434,8 @@ if(ok == 0){ if(ps_global->mm_log_error){ - s1 = err_prefix ? err_prefix : "Fcc Error: "; - s2 = err_suffix ? err_suffix : " Message NOT sent or copied."; + s1 = err_prefix ? err_prefix : "Fcc 錯誤:"; + s2 = err_suffix ? err_suffix : " 信件沒有被寄出或複製。"; l1 = strlen(s1); l2 = strlen(s2); @@ -7454,10 +7454,10 @@ } else - errstr = "Fcc creation error. Message NOT sent or copied."; + errstr = "建立 Fcc 時發生錯誤。信件沒有被送出或複製。"; } else - errstr = "Fcc creation rejected. Message NOT sent or copied."; + errstr = "Fcc 之建立遭拒絕。信件沒有被送出或複製。"; q_status_message(SM_ORDER | SM_DING, 3, 3, errstr); } @@ -7505,7 +7505,7 @@ if(label && *label){ char msg_buf[80]; - strncat(strcpy(msg_buf, "Writing "), label, sizeof(msg_buf)-10); + strncat(strcpy(msg_buf, "正在寫入 "), label, sizeof(msg_buf)-10); we_cancel = busy_alarm(1, msg_buf, NULL, 1); } else @@ -7533,7 +7533,7 @@ we_cancel = 0; q_status_message1(SM_ORDER | SM_DING, 3, 5, - "Write to \"%.200s\" FAILED!!!", fcc); + "寫入 \"%.200s\" 失敗!!!", fcc); dprint(1, (debugfile, "ERROR appending %s in \"%s\"", fcc ? fcc : "?", (cntxt && cntxt->context) ? cntxt->context : "NULL")); @@ -8156,7 +8156,7 @@ if((file_contents = (void *)so_get(FileStar, pa->filename, READ_ACCESS)) == NULL){ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Error \"%.200s\", couldn't attach file \"%.200s\"", + "錯誤 \"%.200s\",無法附加檔案 \"%.200s\"", error_description(errno), pa->filename); display_message('x'); continue; @@ -8600,13 +8600,17 @@ body->subtype = cpystr("octet-stream"); } - /* - * Apply maximal encoding regardless of previous - * setting. This segment's either not text, or is - * unlikely to be readable with > 30% of the - * text encoded anyway, so we might as well save space... - */ - new_encoding = ENCBINARY; /* > 30% 8 bit chars */ + if(body->type == TYPETEXT) + /* Use ENC8BIT rather than ENCBINARY for TEXT */ + new_encoding = ENC8BIT; + else + /* + * Apply maximal encoding regardless of previous + * setting. This segment's either not text, or is + * unlikely to be readable with > 30% of the + * text encoded anyway, so we might as well save space... + */ + new_encoding = ENCBINARY; /* > 30% 8 bit chars */ } } @@ -9333,7 +9337,7 @@ break; default: - q_status_message1(SM_ORDER,3,7,"Unknown header type: %.200s", + q_status_message1(SM_ORDER,3,7,"未知的標頭形態:%.200s", pf->name); break; } @@ -9658,7 +9662,8 @@ switch (body->encoding) { /* all else needs filtering */ case ENC8BIT: /* encode 8BIT into QUOTED-PRINTABLE */ - gf_link_filter(gf_8bit_qp, NULL); + if(F_OFF(F_ENABLE_8BIT, ps_global)) /* unless 8BIT enabled */ + gf_link_filter(gf_8bit_qp, NULL); break; case ENCBINARY: /* encode binary into BASE64 */ @@ -9672,7 +9677,7 @@ if(encode_error = gf_pipe(gc, l_putc)){ /* shove body part down pipe */ q_status_message1(SM_ORDER | SM_DING, 3, 4, - "Encoding Error \"%.200s\"", encode_error); + "編碼時發生錯誤 \"%.200s\"", encode_error); display_message('x'); } @@ -9772,7 +9777,7 @@ && !(so_puts(so, "Content-Transfer-Encoding: ") && so_puts(so, body_encodings[(body->encoding==ENCBINARY) ? ENCBASE64 - : (body->encoding == ENC8BIT) + : (body->encoding == ENC8BIT && F_OFF(F_ENABLE_8BIT, ps_global)) ? ENCQUOTEDPRINTABLE : (body->encoding <= ENCMAX) ? body->encoding @@ -10075,7 +10080,7 @@ BODY *bp = NULL; error_buf[0] = '\0'; - we_cancel = busy_alarm(1, "Posting news", NULL, 1); + we_cancel = busy_alarm(1, "正在張貼文章", NULL, 1); dprint(4, (debugfile, "Posting: [%s]\n", (header && header->env && header->env->newsgroups) @@ -10451,7 +10456,7 @@ /* Don't allow any of the forbidden headers. */ if(pine_header_forbidden(name)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Not allowed to change header \"%.200s\"", + "不允許\改變標頭 \"%.200s\"", name); *t = save; @@ -10755,7 +10760,7 @@ if(ps_global->post){ if(gripe) q_status_message(SM_ORDER|SM_DING, 3, 3, - "Can't post while posting!"); + "無法於正在刊登文章時再度刊登!"); return(1); } --- pine/screen.c.orig Wed Sep 7 04:32:28 2005 +++ pine/screen.c Fri Oct 7 21:53:27 2005 @@ -582,7 +582,7 @@ static struct key cancel_keys[] = - {{NULL,NULL,KS_NONE}, {"^C","Cancel",KS_NONE}, + {{NULL,NULL,KS_NONE}, {"^C","取消",KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, @@ -1308,10 +1308,10 @@ as.page_column = -1; is_context = strlen(as.context_name); sprintf(version, "PINE %.40s", pine_version); - ss_string = as.stream_status == ClosedUp ? "(CLOSED)" : + ss_string = as.stream_status == ClosedUp ? "(已關閉)" : (as.stream_status == OnlyRead && !IS_NEWS(as.stream)) - ? "(READONLY)" : ""; + ? "(唯讀)" : ""; ss_len = strlen(ss_string); tit_len = strlen(as.title); /* fixed title field width */ @@ -1329,25 +1329,25 @@ * set location field's length and value based on requested style */ if(as.style == ThrdIndex) - loc_label = is_context ? "Thd" : "Thread"; + loc_label = is_context ? "Thd" : "討論串"; else - loc_label = is_context ? "Msg" : "Message"; + loc_label = is_context ? "Msg" : "信件"; if(as.style == ThrdMsgNum || as.style == ThrdMsgPercent) - thd_label = is_context ? "Thd" : "Thread"; + thd_label = is_context ? "Thd" : "討論串"; loc_len = strlen(loc_label); if(!mn_get_total(as.msgmap)){ - sprintf(tmp_20k_buf, "No %ss", loc_label); + sprintf(tmp_20k_buf, "沒有%s", loc_label); loc_len += 4; } else{ switch(as.style){ case FolderName : /* "x,xxx s" */ loc_len += digit_count(mn_get_total(as.msgmap)) + 3; - sprintf(tmp_20k_buf, "%s %s%s", comatose(mn_get_total(as.msgmap)), - loc_label, plural(mn_get_total(as.msgmap))); + sprintf(tmp_20k_buf, "%s 封%s", comatose(mn_get_total(as.msgmap)), + loc_label); break; case MessageNumber : /* " xxx of xxx DEL" */ num_len = digit_count(mn_get_total(as.msgmap)); @@ -1355,7 +1355,7 @@ as.cur_mess_col = sc - (2 * num_len) - (8+LR); as.del_column = as.cur_mess_col + num_len + digit_count(as.current_msg) + 5; - sprintf(tmp_20k_buf, "%s %s of %s %s", loc_label, + sprintf(tmp_20k_buf, "%s %s 之 %s %s", loc_label, strcpy(tmp_20k_buf+1000, comatose(as.current_msg)), strcpy(tmp_20k_buf+1500, comatose(mn_get_total(as.msgmap))), BAR_STATUS(as.msg_state)); @@ -1364,7 +1364,7 @@ num_len = digit_count(as.total_lines); loc_len += (2 * num_len) + 5; /* add spaces */ as.cur_mess_col = sc - (2 * num_len) - (4+LR); - sprintf(tmp_20k_buf, "%s %s of %s", loc_label, + sprintf(tmp_20k_buf, "%s %s 之 %s", loc_label, strcpy(tmp_20k_buf + 1000, comatose(as.current_thrd)), strcpy(tmp_20k_buf + 1500, comatose(as.total_lines))); break; @@ -1375,7 +1375,7 @@ as.cur_mess_col = sc - l1 - l2 - (9+LR) - strlen(thd_label); as.del_column = as.cur_mess_col + digit_count(as.current_msg) + l2 + 6 + strlen(thd_label); - sprintf(tmp_20k_buf, "%s %s in %s %s %s", loc_label, + sprintf(tmp_20k_buf, "%s %s 於 %s %s %s", loc_label, strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)), thd_label, strcpy(tmp_20k_buf + 1500, comatose(as.current_thrd)), @@ -1388,7 +1388,7 @@ as.percent_column = as.cur_mess_col + num_len + digit_count(as.current_msg) + 5; as.del_column = as.percent_column + 4; - sprintf(tmp_20k_buf, "%s %s of %s %s %s", loc_label, + sprintf(tmp_20k_buf, "%s %s 之 %s %s %s", loc_label, strcpy(tmp_20k_buf+1000, comatose(as.current_msg)), strcpy(tmp_20k_buf+1500, comatose(mn_get_total(as.msgmap))), percentage(as.current_line, as.total_lines, 1), @@ -1401,7 +1401,7 @@ as.percent_column = as.cur_mess_col + digit_count(as.current_msg) + digit_count(as.current_thrd) + 6 + strlen(thd_label); as.del_column = as.percent_column + 4; - sprintf(tmp_20k_buf, "%s %s in %s %s %s %s", loc_label, + sprintf(tmp_20k_buf, "%s %s 於 %s %s %s %s", loc_label, strcpy(tmp_20k_buf+1000, comatose(as.current_msg)), thd_label, strcpy(tmp_20k_buf+1500, comatose(as.current_thrd)), @@ -1414,7 +1414,7 @@ num_len = digit_count(as.total_lines); as.page_column = sc - ((12+LR) + 2*num_len); loc_len = 17 + 2*num_len; - sprintf(tmp_20k_buf, "Line %*ld of %*ld %s ", + sprintf(tmp_20k_buf, "行 %*ld 之 %*ld %s ", num_len, as.current_line, num_len, as.total_lines, percentage(as.current_line, as.total_lines, 1)); @@ -1512,7 +1512,7 @@ } else{ fmt = "%-*sFolder: %s%s"; - extra = strlen("Folder: "); + extra = strlen("信件匣:"); if(fold_len + ss_len + extra + s <= avail) sprintf(fold_tmp, fmt, s ? (avail - (fold_len + ss_len + extra)) : 0, @@ -1821,7 +1821,7 @@ if(titlecolor) lastc = pico_set_colorp(titlecolor, PSC_REV|PSC_RET); - sprintf(tmp_20k_buf, "%*ld of %*ld %s ", + sprintf(tmp_20k_buf, "%*ld 之 %*ld %s ", digit_count(as.total_lines), as.current_line, digit_count(as.total_lines), as.total_lines, percentage(as.current_line, as.total_lines, 0)); --- pine/reply.c.orig Tue Sep 13 06:04:25 2005 +++ pine/reply.c Fri Oct 7 21:53:27 2005 @@ -109,9 +109,9 @@ /* * Little defs to keep the code a bit neater... */ -#define FRM_PMT "Use \"Reply-To:\" address instead of \"From:\" address" -#define ALL_PMT "Reply to all recipients" -#define NEWS_PMT "Follow-up to news group(s), Reply via email to author or Both? " +#define FRM_PMT "使用 \"Reply-To:\" 地址代替 \"From:\" 地址" +#define ALL_PMT "回覆給所有的收信者" +#define NEWS_PMT "回覆至新聞組群,回函給作者或兩者皆要?" /* @@ -358,7 +358,7 @@ role = combine_inherited_role(role); else{ /* cancel reply */ role = NULL; - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); goto done_early; } } @@ -667,7 +667,7 @@ #endif /* partially formatted outgoing message */ - pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY", + pine_send(outgoing, &body, "編輯信件回函", role, fcc.tptr, &reply, redraft_pos, NULL, NULL, 0); done: pine_free_body(&body); @@ -749,7 +749,7 @@ (ADDRESS *) NULL, env->from, 0); if(ret == 'x') { - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); return(0); } @@ -798,7 +798,7 @@ || (*saved_cc || *saved_resent))){ *flags &= ~RSF_QUERY_REPLY_ALL; if((ret=want_to(ALL_PMT,'n','x',NO_HELP,WT_SEQ_SENSITIVE)) == 'x'){ - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); return(0); } else if(ret == 'y') @@ -957,11 +957,11 @@ } if(rflags & ROLE_REPLY) - prompt_fodder = "Reply"; + prompt_fodder = "回覆"; else if(rflags & ROLE_FORWARD) - prompt_fodder = "Forward"; + prompt_fodder = "轉寄"; else - prompt_fodder = "Compose"; + prompt_fodder = "編輯"; done = 0; while(!done){ @@ -970,10 +970,10 @@ help = h_role_confirm; ekey[0].name = "Y"; - ekey[0].label = "Yes"; + ekey[0].label = "是"; ekey[1].name = "N"; - ekey[1].label = "No, use default settings"; - ekey[2].label = "To Select Alternate Role"; + ekey[1].label = "否,使用預設值"; + ekey[2].label = "選擇替代身份"; if(curpat->patgrp && curpat->patgrp->nick) sprintf(prompt, "Use role \"%.50s\" for %s? ", short_str(curpat->patgrp->nick, buf, 50, MidDots), @@ -1701,8 +1701,8 @@ { int ret, edited = 0; static ESCKEY_S rtq_opts[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, {-1, 0, NULL, NULL}, /* may be overridden below */ {-1, 0, NULL, NULL} }; @@ -1712,19 +1712,18 @@ return(1); while(1){ - sprintf(tmp_20k_buf, "Include %s%soriginal message%s in Reply%s%s%s? ", - (many > 1L) ? comatose(many) : "", - (many > 1L) ? " " : "", - (many > 1L) ? "s" : "", - F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps) ? " (using \"" : "", + sprintf(tmp_20k_buf, "在回函%s%s%s中包含%s%s原本的訊息?", + F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps) ? "(使用 \"" : "", F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps) ? *prefix : "", - F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps) ? "\")" : ""); + F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps) ? "\" 為引言標示代號)" : "", + (many > 1L) ? comatose(many) : "", + (many > 1L) ? " " : ""); if(F_ON(F_ENABLE_EDIT_REPLY_INDENT, ps)){ rtq_opts[2].ch = ctrl('R'); rtq_opts[2].rval = 'r'; rtq_opts[2].name = "^R"; - rtq_opts[2].label = "Edit Indent String"; + rtq_opts[2].label = "編輯引言標示代號"; } else rtq_opts[2].ch = -1; @@ -1737,7 +1736,7 @@ ? 'y' : 'n', 'x', NO_HELP, RB_SEQ_SENSITIVE, NULL)){ case 'x': - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); return(-1); case 'r': @@ -1757,7 +1756,7 @@ switch(optionally_enter(buf, ps->ttyo->screen_rows > 4 ? -FOOTER_ROWS(ps_global) : -1, - 0, sizeof(buf), "Reply prefix : ", + 0, sizeof(buf), "引言標示前置符號:", NULL, NO_HELP, &flags)){ case 0: /* entry successful, continue */ if(flags & OE_USER_MODIFIED){ @@ -1770,7 +1769,7 @@ break; case 1: - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); case -1: return(-1); @@ -2949,9 +2948,9 @@ ENVELOPE *env, *outgoing; { int ret = 1; - static ESCKEY_S news_opt[] = { {'f', 'f', "F", "Follow-up"}, - {'r', 'r', "R", "Reply"}, - {'b', 'b', "B", "Both"}, + static ESCKEY_S news_opt[] = { {'f', 'f', "F", "回覆至版上"}, + {'r', 'r', "R", "回給作者"}, + {'b', 'b', "B", "兩者皆要"}, {-1, 0, NULL, NULL} }; if(env->newsgroups && *env->newsgroups && !reply_poster_followup(env)) @@ -2975,7 +2974,7 @@ case 'x' : /* cancel or unknown response */ default : - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); ret = 0; break; } @@ -2983,7 +2982,7 @@ if(ret > 1){ if(env->followup_to){ q_status_message(SM_ORDER, 2, 3, - "Posting to specified Followup-To groups"); + "刊登至特定的回覆組群"); outgoing->newsgroups = cpystr(env->followup_to); } else if(!outgoing->newsgroups) @@ -3675,7 +3674,7 @@ forward_raw_body = 1; if((totalmsgs = mn_total_cur(ps->msgmap)) > 1L){ - sprintf(tmp_20k_buf, "%s forwarded messages...", comatose(totalmsgs)); + sprintf(tmp_20k_buf, "%s 封被轉寄的信件...", comatose(totalmsgs)); outgoing->subject = cpystr(tmp_20k_buf); } else{ @@ -3684,7 +3683,7 @@ if(!((env = pine_mail_fetchstructure(ps->mail_stream, msgno, NULL)) && (outgoing->subject = forward_subject(env, 0)))){ q_status_message1(SM_ORDER,3,4, - "Error fetching message %.200s. Can't forward it.", + "擷取信件 %.200s 時發生錯誤。無法將之轉寄。", long2string(msgno)); goto clean; } @@ -3696,20 +3695,20 @@ */ if((msgtext = (void *)so_get(PicoText, NULL, EDIT_ACCESS)) == NULL){ q_status_message(SM_ORDER | SM_DING, 3, 4, - "Error allocating message text"); + "配置訊息文字時發生錯誤"); goto clean; } ret = (totalmsgs > 1L) - ? want_to("Forward messages as a MIME digest", 'y', 'x', + ? want_to("將信件以 MIME digest 的形式轉寄", 'y', 'x', NO_HELP, WT_SEQ_SENSITIVE) : (ps->full_header == 2) - ? want_to("Forward message as an attachment", 'n', 'x', + ? want_to("將信件以附件的形式轉寄", 'n', 'x', NO_HELP, WT_SEQ_SENSITIVE) : 0; if(ret == 'x'){ - cmd_cancelled("Forward"); + cmd_cancelled("轉寄"); so_give((STORE_S **)&msgtext); goto clean; } @@ -3740,7 +3739,7 @@ role = combine_inherited_role(role); else{ /* cancel reply */ role = NULL; - cmd_cancelled("Forward"); + cmd_cancelled("轉寄"); so_give((STORE_S **)&msgtext); goto clean; } @@ -3749,7 +3748,7 @@ if(role) q_status_message1(SM_ORDER, 3, 4, - "Forwarding using role \"%.200s\"", role->nick); + "正以 \"%.200s\" 的身份轉寄中", role->nick); if(role && role->template){ char *filtered; @@ -3953,7 +3952,7 @@ #if defined(DOS) && !defined(_WINDOWS) free((void *)reserve); #endif - pine_send(outgoing, &body, "FORWARD MESSAGE", + pine_send(outgoing, &body, "轉寄信件", role, NULL, reply.flags ? &reply : NULL, redraft_pos, NULL, NULL, FALSE); @@ -3980,7 +3979,7 @@ mail_gc(ps->mail_stream, GC_TEXTS); #endif q_status_message(SM_ORDER | SM_DING, 4, 5, - "Error fetching message contents. Can't forward message."); + "擷取信件內容時發生錯誤。無法轉寄信件。"); goto clean; } @@ -4035,7 +4034,7 @@ } - return(cpystr("Forwarded mail....")); + return(cpystr("正在轉寄信件....")); } @@ -4424,7 +4423,7 @@ if(confirm_role(rflags, &role)) role = combine_inherited_role(role); else{ /* cancel */ - cmd_cancelled("Composition"); + cmd_cancelled("編輯"); display_message('x'); mail_free_envelope(&env); pine_free_body(&body); @@ -4433,7 +4432,7 @@ } if(role) - q_status_message1(SM_ORDER, 3, 4, "Composing using role \"%.200s\"", + q_status_message1(SM_ORDER, 3, 4, "以 \"%.200s\" 的身份編輯", role->nick); sig = detoken(role, NULL, 2, 0, 1, NULL, NULL); @@ -5432,6 +5431,8 @@ char * generate_message_id() { + struct timeval tp; + struct timezone tzp; static short osec = 0, cnt = 0; char *id; time_t now; @@ -5440,7 +5441,7 @@ now = time((time_t *)0); now_x = localtime(&now); - id = (char *)fs_get(128 * sizeof(char)); + id = (char *)fs_get(384 * sizeof(char)); if(now_x->tm_sec == osec) cnt++; @@ -5456,8 +5457,11 @@ if(!hostpart) hostpart = cpystr("huh"); - sprintf(id,"", - SYSTYPE, pine_version, (now_x->tm_year) % 100, now_x->tm_mon + 1, + if(gettimeofday(&tp, &tzp) == 0) + cnt += (time_t)tp.tv_usec % ('Z' - 'A'); + + sprintf(id,"<%02d%02d%02d%02d%02d%02d%X.%d@%.50s>", + (now_x->tm_year) % 100, now_x->tm_mon + 1, now_x->tm_mday, now_x->tm_hour, now_x->tm_min, now_x->tm_sec, cnt, getpid(), hostpart); --- pine/pine.hlp.orig Thu Sep 29 01:56:29 2005 +++ pine/pine.hlp Fri Oct 7 21:53:29 2005 @@ -1011,7 +1011,7 @@ sentmail# ~/mail/sent-mail mailcap# ~/.mailcap + /etc/mailcap + /usr/etc/mailcap + /usr/local/etc/mailcap - mimetypes# ~/.mime.types + /etc/mime.types + /usr/local/lib/mime.types + mimetypes# ~/.mime.types + /etc/mime.types + /usr/local/etc/mime.types news-spool varies across Unix flavors, e.g. /var/spool/news or /usr/spool/news active-news varies across Unix flavors, e.g. /usr/lib/news/active --- pine/pine.h.orig Fri Sep 16 08:39:42 2005 +++ pine/pine.h Fri Oct 7 21:53:28 2005 @@ -545,7 +545,7 @@ /* Is this a vCard attachment? */ #define MIME_VCARD_A(a) MIME_VCARD((a)->body->type, (a)->body->subtype) -#define STYLE_NAME(a) ((a)->text.desc ? (a)->text.desc : "text") +#define STYLE_NAME(a) ((a)->text.desc ? (a)->text.desc : "文字") /* @@ -2998,100 +2998,100 @@ * Some standard Key/Command Bindings */ #define NULL_MENU {NULL, NULL, {MC_NONE}, KS_NONE} -#define HELP_MENU {"?", "Help", \ +#define HELP_MENU {"?", "輔助說明", \ {MC_HELP, 2, {'?',ctrl('G')}}, \ KS_SCREENHELP} -#define OTHER_MENU {"O", "OTHER CMDS", \ +#define OTHER_MENU {"O", "其他命令", \ {MC_OTHER, 1, {'o'}}, \ KS_NONE} -#define WHEREIS_MENU {"W", "WhereIs", \ +#define WHEREIS_MENU {"W", "搜尋", \ {MC_WHEREIS, 2, {'w',ctrl('W')}}, \ KS_WHEREIS} -#define MAIN_MENU {"M", "Main Menu", \ +#define MAIN_MENU {"M", "主選單", \ {MC_MAIN, 1, {'m'}}, \ KS_MAINMENU} -#define QUIT_MENU {"Q", "Quit Pine", \ +#define QUIT_MENU {"Q", "結束 Pine", \ {MC_QUIT, 1, {'q'}}, \ KS_EXIT} -#define PREVMSG_MENU {"P", "PrevMsg", \ +#define PREVMSG_MENU {"P", "前一個", \ {MC_PREVITEM, 1, {'p'}}, \ KS_PREVMSG} -#define NEXTMSG_MENU {"N", "NextMsg", \ +#define NEXTMSG_MENU {"N", "下一個", \ {MC_NEXTITEM, 1, {'n'}}, \ KS_NEXTMSG} -#define HOMEKEY_MENU {"Hme", "FirstPage", \ +#define HOMEKEY_MENU {"Hme", "第一頁", \ {MC_HOMEKEY, 1, {KEY_HOME}}, \ KS_NONE} -#define ENDKEY_MENU {"End", "LastPage", \ +#define ENDKEY_MENU {"End", "最終頁", \ {MC_ENDKEY, 1, {KEY_END}}, \ KS_NONE} -#define PREVPAGE_MENU {"-", "PrevPage", \ +#define PREVPAGE_MENU {"-", "前一頁", \ {MC_PAGEUP, 3, {'-',ctrl('Y'),KEY_PGUP}}, \ KS_PREVPAGE} -#define NEXTPAGE_MENU {"Spc", "NextPage", \ +#define NEXTPAGE_MENU {"Spc", "下一頁", \ {MC_PAGEDN, 4, {'+',' ',ctrl('V'),KEY_PGDN}}, \ KS_NEXTPAGE} -#define JUMP_MENU {"J", "Jump", \ +#define JUMP_MENU {"J", "跳至", \ {MC_JUMP, 1, {'j'}}, \ KS_JUMPTOMSG} -#define FWDEMAIL_MENU {"F", "Fwd Email", \ +#define FWDEMAIL_MENU {"F", "信件轉寄", \ {MC_FWDTEXT,1,{'f'}}, \ KS_FORWARD} -#define PRYNTMSG_MENU {"%", "Print", \ +#define PRYNTMSG_MENU {"%", "列印", \ {MC_PRINTMSG,1,{'%'}}, \ KS_PRINT} -#define PRYNTTXT_MENU {"%", "Print", \ +#define PRYNTTXT_MENU {"%", "列印", \ {MC_PRINTTXT,1,{'%'}}, \ KS_PRINT} -#define SAVE_MENU {"S", "Save", \ +#define SAVE_MENU {"S", "存檔", \ {MC_SAVE,1,{'s'}}, \ KS_SAVE} -#define EXPORT_MENU {"E", "Export", \ +#define EXPORT_MENU {"E", "匯出", \ {MC_EXPORT, 1, {'e'}}, \ KS_EXPORT} -#define COMPOSE_MENU {"C", "Compose", \ +#define COMPOSE_MENU {"C", "編修", \ {MC_COMPOSE,1,{'c'}}, \ KS_COMPOSER} -#define RCOMPOSE_MENU {"#", "Role", \ +#define RCOMPOSE_MENU {"#", "身份", \ {MC_ROLE,1,{'#'}}, \ KS_NONE} -#define DELETE_MENU {"D", "Delete", \ +#define DELETE_MENU {"D", "刪除", \ {MC_DELETE,2,{'d',KEY_DEL}}, \ KS_DELETE} -#define UNDELETE_MENU {"U", "Undelete", \ +#define UNDELETE_MENU {"U", "復原刪除", \ {MC_UNDELETE,1,{'u'}}, \ KS_UNDELETE} -#define REPLY_MENU {"R", "Reply", \ +#define REPLY_MENU {"R", "回覆", \ {MC_REPLY,1,{'r'}}, \ KS_REPLY} -#define FORWARD_MENU {"F", "Forward", \ +#define FORWARD_MENU {"F", "轉寄", \ {MC_FORWARD,1,{'f'}}, \ KS_FORWARD} -#define LISTFLD_MENU {"L", "ListFldrs", \ +#define LISTFLD_MENU {"L", "資料匣列表", \ {MC_COLLECTIONS,1,{'l'}}, \ KS_FLDRLIST} -#define INDEX_MENU {"I", "Index", \ +#define INDEX_MENU {"I", "索引", \ {MC_INDEX,1,{'i'}}, \ KS_FLDRINDEX} -#define GOTO_MENU {"G", "GotoFldr", \ +#define GOTO_MENU {"G", "切換資料匣", \ {MC_GOTO,1,{'g'}}, \ KS_GOTOFLDR} -#define TAKE_MENU {"T", "TakeAddr", \ +#define TAKE_MENU {"T", "取得地址", \ {MC_TAKE,1,{'t'}}, \ KS_TAKEADDR} -#define FLAG_MENU {"*", "Flag", \ +#define FLAG_MENU {"*", "旗標", \ {MC_FLAG,1,{'*'}}, \ KS_FLAG} -#define PIPE_MENU {"|", "Pipe", \ +#define PIPE_MENU {"|", "導向(Pipe)", \ {MC_PIPE,1,{'|'}}, \ KS_NONE} -#define BOUNCE_MENU {"B", "Bounce", \ +#define BOUNCE_MENU {"B", "退信", \ {MC_BOUNCE,1,{'b'}}, \ KS_BOUNCE} -#define HDRMODE_MENU {"H", "HdrMode", \ +#define HDRMODE_MENU {"H", "完整標頭", \ {MC_FULLHDR,1,{'h'}}, \ KS_HDRMODE} -#define TAB_MENU {"Tab", "NextNew", \ +#define TAB_MENU {"Tab", "下一個新的", \ {MC_TAB,1,{TAB}}, \ KS_NONE} --- pine/pine.c.orig Tue Sep 13 06:04:25 2005 +++ pine/pine.c Fri Oct 7 21:53:28 2005 @@ -136,22 +136,22 @@ static struct key choose_setup_keys[] = {HELP_MENU, OTHER_MENU, - {"E","Exit Setup",{MC_EXIT,3,{'e','m',ctrl('C')}},KS_EXITMODE}, - {"P","Printer",{MC_PRINTER,1,{'p'}},KS_NONE}, - {"N","Newpassword",{MC_PASSWD,1,{'n'}},KS_NONE}, - {"C","Config",{MC_CONFIG,1,{'c'}},KS_NONE}, - {"S","Signature",{MC_SIG,1,{'s'}},KS_NONE}, - {"A","AddressBooks",{MC_ABOOKS,1,{'a'}},KS_NONE}, - {"L","collectionList",{MC_CLISTS,1,{'l'}},KS_NONE}, - {"R","Rules",{MC_RULES,1,{'r'}},KS_NONE}, - {"D","Directory",{MC_DIRECTORY,1,{'d'}},KS_NONE}, - {"K","Kolor",{MC_KOLOR,1,{'k'}},KS_NONE}, + {"E","離開設定",{MC_EXIT,3,{'e','m',ctrl('C')}},KS_EXITMODE}, + {"P","印表機",{MC_PRINTER,1,{'p'}},KS_NONE}, + {"N","設定新密碼",{MC_PASSWD,1,{'n'}},KS_NONE}, + {"C","環境設定",{MC_CONFIG,1,{'c'}},KS_NONE}, + {"S","編輯簽名檔",{MC_SIG,1,{'s'}},KS_NONE}, + {"A","地址簿",{MC_ABOOKS,1,{'a'}},KS_NONE}, + {"L","總集列表",{MC_CLISTS,1,{'l'}},KS_NONE}, + {"R","規則",{MC_RULES,1,{'r'}},KS_NONE}, + {"D","目錄",{MC_DIRECTORY,1,{'d'}},KS_NONE}, + {"K","色彩",{MC_KOLOR,1,{'k'}},KS_NONE}, HELP_MENU, OTHER_MENU, NULL_MENU, - {"Z","RemoteConfigSetup",{MC_REMOTE,1,{'z'}},KS_NONE}, + {"Z","遠端設定",{MC_REMOTE,1,{'z'}},KS_NONE}, NULL_MENU, NULL_MENU, PREVPAGE_MENU, @@ -174,12 +174,12 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"P","PrevCmd",{MC_PREVITEM,3,{'p',ctrl('P'),KEY_UP}},KS_NONE}, - {"N","NextCmd",{MC_NEXTITEM,3,{'n',ctrl('N'),KEY_DOWN}},KS_NONE}, + {"P","前一命令",{MC_PREVITEM,3,{'p',ctrl('P'),KEY_UP}},KS_NONE}, + {"N","次一命令",{MC_NEXTITEM,3,{'n',ctrl('N'),KEY_DOWN}},KS_NONE}, NULL_MENU, NULL_MENU, - {"R","RelNotes",{MC_RELNOTES,1,{'r'}},KS_NONE}, - {"K","KBLock",{MC_KBLOCK,1,{'k'}},KS_NONE}, + {"R","出版說明",{MC_RELNOTES,1,{'r'}},KS_NONE}, + {"K","鍵盤鎖定",{MC_KBLOCK,1,{'k'}},KS_NONE}, NULL_MENU, NULL_MENU, @@ -189,10 +189,10 @@ COMPOSE_MENU, LISTFLD_MENU, GOTO_MENU, - {"I","Index",{MC_INDEX,1,{'i'}},KS_FLDRINDEX}, - {"J","Journal",{MC_JOURNAL,1,{'j'}},KS_REVIEW}, - {"S","Setup",{MC_SETUP,1,{'s'}},KS_NONE}, - {"A","AddrBook",{MC_ADDRBOOK,1,{'a'}},KS_ADDRBOOK}, + {"I","索引",{MC_INDEX,1,{'i'}},KS_FLDRINDEX}, + {"J","日誌",{MC_JOURNAL,1,{'j'}},KS_REVIEW}, + {"S","設定",{MC_SETUP,1,{'s'}},KS_NONE}, + {"A","地址簿",{MC_ADDRBOOK,1,{'a'}},KS_ADDRBOOK}, RCOMPOSE_MENU, NULL_MENU}; INST_KEY_MENU(main_keymenu, main_keys); @@ -914,7 +914,7 @@ static struct key simple_file_keys[] = {HELP_MENU, NULL_MENU, - {"Q","Quit Viewer",{MC_EXIT,1,{'q'}},KS_NONE}, + {"Q","離開",{MC_EXIT,1,{'q'}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -923,15 +923,15 @@ PRYNTTXT_MENU, WHEREIS_MENU, FWDEMAIL_MENU, - {"S", "Save", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; + {"S", "存檔", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; INST_KEY_MENU(simple_file_keymenu, simple_file_keys); #define SAVE_KEY 9 memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = src; - sargs.text.desc = "file"; - sargs.bar.title = "FILE VIEW"; + sargs.text.desc = "檔案"; + sargs.bar.title = "檢視檔案"; sargs.bar.style = FileTextPercent; sargs.keys.menu = &simple_file_keymenu; setbitmap(sargs.keys.bitmap); @@ -1194,7 +1194,7 @@ if(!pine_state->VAR_INBOX_PATH || !pine_state->VAR_INBOX_PATH[0] || strucmp(pine_state->VAR_INBOX_PATH, "inbox") == 0){ HelpType help = NO_HELP; - static ESCKEY_S ekey[] = {{ctrl(T), 2, "^T", "To Fldrs"}, + static ESCKEY_S ekey[] = {{ctrl(T), 2, "^T", "資料匣"}, {-1, 0, NULL, NULL}}; pine_state->mangled_footer = 1; @@ -1204,7 +1204,7 @@ rv = optionally_enter(int_mail, -FOOTER_ROWS(pine_state), 0, sizeof(int_mail), - "No inbox! Folder to open as inbox : ", + "沒有新進信件匣(inbox)!信件匣開啟為 inbox:", /* ekey */ NULL, help, &flags); if(rv == 3){ help = (help == NO_HELP) ? h_sticky_inbox : NO_HELP; @@ -1216,7 +1216,7 @@ } if(rv == 1){ - q_status_message(SM_ORDER, 0, 2 ,"Folder open cancelled"); + q_status_message(SM_ORDER, 0, 2 ,"取消開啟信件匣"); rv = 0; /* reset rv */ } else if(rv == 2){ @@ -1235,7 +1235,7 @@ removing_leading_white_space(int_mail); if((!pine_state->VAR_INBOX_PATH || strucmp(pine_state->VAR_INBOX_PATH, "inbox") == 0) - && want_to("Preserve folder as \"inbox-path\" in PINERC", + && want_to("在 PINERC 中保留資料匣為 \"inbox-path\"", 'y', 'n', NO_HELP, WT_NORM) == 'y'){ set_variable(V_INBOX_PATH, int_mail, 1, 1, Main); } @@ -1402,25 +1402,25 @@ *news_addition; int key_index; /* index into keymenu array for this cmd */ } mkeys[] = { - {" %s HELP - Get help using Pine", + {" %s 使用說明 - Pine 的使用說明", NULL, MAIN_HELP_KEY}, {"", NULL, UNUSED}, - {" %s COMPOSE MESSAGE - Compose and send%s a message", + {" %s 寫信 - 寫信或是發表文章", "/post", MAIN_COMPOSE_KEY}, {"", NULL, UNUSED}, - {" %s MESSAGE INDEX - View messages in current folder", + {" %s 查看信件匣 - 查看目前信件匣內的信件", NULL, MAIN_INDEX_KEY}, {"", NULL, UNUSED}, - {" %s FOLDER LIST - Select a folder%s to view", - " OR news group", MAIN_FOLDER_KEY}, + {" %s 信件匣列表 - 列出信件匣%s以供選擇", + "或是新聞組群", MAIN_FOLDER_KEY}, {"", NULL, UNUSED}, - {" %s ADDRESS BOOK - Update address book", + {" %s 地址簿 - 更新或修改地址簿的內容", NULL, MAIN_ADDRESS_KEY}, {"", NULL, UNUSED}, - {" %s SETUP - Configure Pine Options", + {" %s 設定 - 設定 Pine 的內部參數", NULL, MAIN_SETUP_KEY}, {"", NULL, UNUSED}, - {" %s QUIT - Leave the Pine program", + {" %s 離開 - 結束 Pine 的使用", NULL, MAIN_QUIT_KEY} }; @@ -1736,7 +1736,7 @@ pine_state->mangled_footer = 1; } else{ - helper(main_menu_tx, "HELP FOR MAIN MENU", 0); + helper(main_menu_tx, "主選單的輔助說明", 0); pine_state->mangled_screen = 1; } @@ -1764,7 +1764,7 @@ just_a_navigate_cmd++; } else - q_status_message(SM_ORDER, 0, 2, "Already at top of list"); + q_status_message(SM_ORDER, 0, 2, "已經在列表頂端了"); break; @@ -1780,14 +1780,14 @@ just_a_navigate_cmd++; } else - q_status_message(SM_ORDER, 0, 2, "Already at bottom of list"); + q_status_message(SM_ORDER, 0, 2, "已經在列表底端了"); break; /*---------- Release Notes ----------*/ case MC_RELNOTES : - helper(h_news, "PINE RELEASE NOTES", 0); + helper(h_news, "PINE 出版摘要", 0); pine_state->mangled_screen = 1; break; @@ -2048,7 +2048,7 @@ /* paint the titlebar if needed */ if(ps->mangled_header){ - set_titlebar("MAIN MENU", ps->mail_stream, ps->context_current, + set_titlebar("主選單", ps->mail_stream, ps->context_current, ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0, NULL); ps->mangled_header = 0; } @@ -2278,7 +2278,7 @@ sparms->bar.title = cpystr("SETUP"); ps_global->mangled_header = 1; menu_init_binding(sparms->keys.menu, 'x', MC_EXCEPT, "X", - "eXceptions", SETUP_EXCEPT); + "例外", SETUP_EXCEPT); } if(sparms->keys.menu->which == 1) @@ -2291,7 +2291,7 @@ #if defined(DOS) || defined(OS2) q_status_message(SM_ORDER, 0, 2, "Need argument \"-x \" or \"PINERCEX\" file to use eXceptions"); #else - q_status_message(SM_ORDER, 0, 2, "Need argument \"-x \" or \".pinercex\" file to use eXceptions"); + q_status_message(SM_ORDER, 0, 2, "須以參數 \"-x \" 或 \".pinercex\" 檔案來使用例外功\能"); #endif rv = 0; break; @@ -2484,10 +2484,10 @@ if(exc) menu_init_binding(sargs.keys.menu, 'x', MC_EXCEPT, "X", - "eXceptions", SETUP_EXCEPT); + "例外", SETUP_EXCEPT); else menu_init_binding(sargs.keys.menu, 'x', MC_NO_EXCEPT, "X", - "eXceptions", SETUP_EXCEPT); + "例外", SETUP_EXCEPT); scrolltool(&sargs); @@ -2652,7 +2652,7 @@ /*----- RULES -----*/ case 'r': rtype = rule_setup_type(ps_global, RS_RULES | RS_INCFILTNOW, - "Type of rule setup : "); + "設定規則形態:"); switch(rtype){ case 'r': case 's': @@ -2742,7 +2742,7 @@ opts[ekey_num].ch = 'a'; opts[ekey_num].rval = 'a'; opts[ekey_num].name = "A"; - opts[ekey_num++].label = "Addrbook"; + opts[ekey_num++].label = "地址簿"; } if(flags & RS_RULES){ @@ -2754,7 +2754,7 @@ opts[ekey_num].ch = 'r'; opts[ekey_num].rval = 'r'; opts[ekey_num].name = "R"; - opts[ekey_num++].label = "Roles"; + opts[ekey_num++].label = "身份"; } else if(deefault != 'a') deefault = 's'; @@ -2762,7 +2762,7 @@ opts[ekey_num].ch = 's'; opts[ekey_num].rval = 's'; opts[ekey_num].name = "S"; - opts[ekey_num++].label = "SetScores"; + opts[ekey_num++].label = "設定得分"; #ifndef _WINDOWS if(ps->color_style != COL_NONE && pico_hascolor()){ @@ -2773,7 +2773,7 @@ opts[ekey_num].ch = 'i'; opts[ekey_num].rval = 'i'; opts[ekey_num].name = "I"; - opts[ekey_num++].label = "Indexcolor"; + opts[ekey_num++].label = "索引色彩"; #ifndef _WINDOWS } else{ @@ -2787,7 +2787,7 @@ opts[ekey_num].ch = 'f'; opts[ekey_num].rval = 'f'; opts[ekey_num].name = "F"; - opts[ekey_num++].label = "Filters"; + opts[ekey_num++].label = "過濾器"; opts[ekey_num].ch = 'o'; opts[ekey_num].rval = 'o'; @@ -2849,14 +2849,14 @@ HELP_MENU, NULL_MENU, {"E",NULL,{MC_EXIT,1,{'e',ctrl('M'),ctrl('J')}},KS_NONE}, - {"Ret","[Be Counted!]",{MC_VIEW_HANDLE,2,{ctrl('M'),ctrl('J')}},KS_NONE}, + {"Ret","[列入使用者總計中]",{MC_VIEW_HANDLE,2,{ctrl('M'),ctrl('J')}},KS_NONE}, NULL_MENU, NULL_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, PRYNTMSG_MENU, NULL_MENU, - {"R","RelNotes",{MC_RELNOTES,1,{'r'}},KS_NONE}, + {"R","出版說明",{MC_RELNOTES,1,{'r'}},KS_NONE}, NULL_MENU}; INST_KEY_MENU(nuov_keymenu, nuov_keys); #define NUOV_EXIT 2 @@ -2952,13 +2952,13 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = CharStar; - sargs.text.desc = "greeting text"; + sargs.text.desc = "問候文字"; sargs.text.handles = handles; - sargs.bar.title = "GREETING TEXT"; + sargs.bar.title = "問候文字"; sargs.bar.style = TextPercent; sargs.proc.tool = nuov_processor; sargs.help.text = main_menu_tx; - sargs.help.title = "MAIN PINE HELP"; + sargs.help.title = "PINE 的主要輔助說明"; sargs.resize_exit = 1; sargs.keys.menu = &km; km = nuov_keymenu; @@ -2968,11 +2968,11 @@ setbitmap(sargs.keys.bitmap); if(ps->phone_home){ - km.keys[NUOV_EXIT].label = "Exit this greeting"; + km.keys[NUOV_EXIT].label = "離開"; km.keys[NUOV_EXIT].bind.nch = 1; } else{ - km.keys[NUOV_EXIT].label = "[Exit this greeting]"; + km.keys[NUOV_EXIT].label = "[離開]"; km.keys[NUOV_EXIT].bind.nch = 3; clrbitn(NUOV_VIEW, sargs.keys.bitmap); } @@ -3058,7 +3058,7 @@ break; case MC_RELNOTES : - helper(h_news, "PINE RELEASE NOTES", 0); + helper(h_news, "PINE 出版摘要", 0); ps_global->mangled_screen = 1; break; @@ -3194,7 +3194,7 @@ if(quit != 'y' && F_OFF(F_QUIT_WO_CONFIRM,pine_state) - && want_to("Really quit pine", 'y', 0, NO_HELP, WT_NORM) != 'y'){ + && want_to("真的要離開 Pine 嗎", 'y', 0, NO_HELP, WT_NORM) != 'y'){ pine_state->next_screen = pine_state->prev_screen; return; } --- pine/other.c.orig Tue Sep 13 06:04:25 2005 +++ pine/other.c Fri Oct 7 21:53:28 2005 @@ -54,24 +54,24 @@ #define BODY_LINES(X) ((X)->ttyo->screen_rows -HEADER_ROWS(X)-FOOTER_ROWS(X)) -#define CONFIG_SCREEN_TITLE "SETUP CONFIGURATION" -#define CONFIG_SCREEN_TITLE_EXC "SETUP CONFIGURATION EXCEPTIONS" -#define CONFIG_SCREEN_HELP_TITLE "HELP FOR SETUP CONFIGURATION" +#define CONFIG_SCREEN_TITLE "環境設定" +#define CONFIG_SCREEN_TITLE_EXC "例外環境設定" +#define CONFIG_SCREEN_HELP_TITLE "環境設定的輔助說明" #define R_SELD '*' -#define EXIT_PMT "Commit changes (\"Yes\" replaces settings, \"No\" abandons changes)" -static char *empty_val = "Empty Value"; -static char *empty_val2 = ""; +#define EXIT_PMT "Commit changes (\"Yes\" 取代設定,\"No\" 放棄改變)" +static char *empty_val = "空的設定值"; +static char *empty_val2 = "<空的設定值>"; #define EMPTY_VAL_LEN 11 -static char *no_val = "No Value Set"; +static char *no_val = "尚未定義設定值"; #define NO_VAL_LEN 12 -static char *fixed_val = "Value is Fixed"; -static char yesstr[] = "Yes"; -static char nostr[] = "No"; +static char *fixed_val = "設定值已被固定"; +static char yesstr[] = "是"; +static char nostr[] = "否"; #define NOT "! " #define NOTLEN 2 -#define ARB_HELP "HELP FOR ARBITRARY HEADER PATTERNS" -#define ADDXHDRS "Add Extra Headers" +#define ARB_HELP "任意標頭式樣的輔助說明" +#define ADDXHDRS "新增額外的標頭" /* another in a long line of hacks in this file */ #define DSTRING "default (" @@ -480,16 +480,16 @@ #ifndef NO_KEYBOARD_LOCK ClearScreen(); - set_titlebar("KEYBOARD LOCK", ps_global->mail_stream, + set_titlebar("鍵盤鎖定", ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder, NULL, 1, FolderName, 0, 0, NULL); PutLine0(6,3 , - "You may lock this keyboard so that no one else can access your mail"); + "可鎖定鍵盤以防止其他人在您離開時存取您的信件。"); PutLine0(8, 3 , - "while you are away. The screen will be locked after entering the "); + "在密碼輸入之後,螢幕將會鎖定,您可在回來後以原密碼"); PutLine0(10, 3 , - "password to be used for unlocking the keyboard when you return."); + "解除鍵盤鎖定。"); fflush(stdout); #endif } @@ -501,12 +501,12 @@ #ifndef NO_KEYBOARD_LOCK ClearScreen(); - set_titlebar("KEYBOARD LOCK", ps_global->mail_stream, + set_titlebar("鍵盤鎖定", ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder, NULL, 1, FolderName, 0, 0, NULL); - PutLine2(6, 3, "This keyboard is locked by %s <%s>.",klockame, klockin); - PutLine0(8, 3, "To unlock, enter password used to lock the keyboard."); + PutLine2(6, 3, "本鍵盤已被 %s <%s> 鎖定。",klockame, klockin); + PutLine0(8, 3, "輸入原本上鎖的密碼以解除鍵盤鎖定。"); fflush(stdout); #endif } @@ -548,9 +548,9 @@ char prompt[50]; sprintf(prompt, - "%s password to LOCK keyboard %s: ", - i ? "Retype" : "Enter", - i > 1 ? "(Yes, again) " : ""); + "%s鎖定鍵盤的密碼 %s:", + i ? "重新輸入" : "輸入", + i > 1 ? "(是的,再一次) " : ""); flags = OE_PASSWD; rc = optionally_enter(pw, -FOOTER_ROWS(ps), 0, sizeof(pw), @@ -559,7 +559,7 @@ if(rc == 3) help = help == NO_HELP ? h_kb_lock : NO_HELP; else if(rc == 1 || pw[0] == '\0'){ - q_status_message(SM_ORDER, 0, 2, "Keyboard lock cancelled"); + q_status_message(SM_ORDER, 0, 2, "取消鍵盤鎖定"); return(-1); } else if(rc != 4) @@ -570,14 +570,14 @@ strcpy(inpasswd, pw); else if(strcmp(inpasswd, pw)){ q_status_message(SM_ORDER, 0, 2, - "Mismatch with initial password: keyboard lock cancelled"); + "和初始密碼不符:取消鍵盤鎖定"); return(-1); } } - if(want_to("Really lock keyboard with entered password", 'y', 'n', + if(want_to("確定以輸入的密碼鎖定鍵盤", 'y', 'n', NO_HELP, WT_NORM) != 'y'){ - q_status_message(SM_ORDER, 0, 2, "Keyboard lock cancelled"); + q_status_message(SM_ORDER, 0, 2, "取消鍵盤鎖定"); return(-1); } @@ -591,7 +591,7 @@ while(strcmp(inpasswd, passwd)){ if(passwd[0]) q_status_message(SM_ORDER | SM_DING, 3, 3, - "Password to UNLOCK doesn't match password used to LOCK"); + "密碼不符"); help = NO_HELP; while(1){ @@ -599,7 +599,7 @@ flags = OE_PASSWD | OE_DISALLOW_CANCEL; rc = optionally_enter(passwd, -FOOTER_ROWS(ps), 0, sizeof(passwd), - "Enter password to UNLOCK keyboard : ",NULL, + "輸入解除鍵盤鎖定的密碼:",NULL, help, &flags); if(rc == 3) { help = help == NO_HELP ? h_oe_keylock : NO_HELP; @@ -614,7 +614,7 @@ if(old_suspend) F_TURN_ON(F_CAN_SUSPEND, ps_global); - q_status_message(SM_ORDER, 0, 3, "Keyboard Unlocked"); + q_status_message(SM_ORDER, 0, 3, "解除鍵盤鎖定"); return(0); } @@ -635,16 +635,16 @@ * * * * * * Start of Config Screen Support Code * * * * * */ -#define PREV_MENU {"P", "Prev", {MC_PREVITEM, 1, {'p'}}, KS_NONE} -#define NEXT_MENU {"N", "Next", {MC_NEXTITEM, 2, {'n','\t'}}, KS_NONE} +#define PREV_MENU {"P", "前一個", {MC_PREVITEM, 1, {'p'}}, KS_NONE} +#define NEXT_MENU {"N", "後一個", {MC_NEXTITEM, 2, {'n','\t'}}, KS_NONE} #define EXIT_SETUP_MENU \ - {"E", "Exit Setup", {MC_EXIT,1,{'e'}}, KS_EXITMODE} + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE} #define TOGGLE_MENU \ - {"X", "[Set/Unset]", {MC_TOGGLE,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} + {"X", "[設定/解除設定]", {MC_TOGGLE,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} #define TOGGLEB_MENU \ - {"X", "[Set/Unset]", {MC_TOGGLEB,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} + {"X", "[設定/解除設定]", {MC_TOGGLEB,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} #define TOGGLEC_MENU \ - {"X", "[Set/Unset]", {MC_TOGGLEC,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} + {"X", "[設定/解除設定]", {MC_TOGGLEC,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} #define TOGGLED_MENU \ {"X", "[Set/Unset]", {MC_TOGGLED,3,{'x',ctrl('M'),ctrl('J')}}, KS_NONE} @@ -652,13 +652,13 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU}; INST_KEY_MENU(config_text_keymenu, config_text_keys); @@ -667,13 +667,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -681,7 +681,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"$", "Shuffle", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, + {"$", "重整", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -695,13 +695,13 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, NULL_MENU, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU}; INST_KEY_MENU(color_pattern_keymenu, color_pattern_keys); @@ -740,13 +740,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -754,8 +754,8 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToFiles", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, - {"F", "editFile", {MC_EDITFILE, 1, {'f'}}, KS_NONE}, + {"T", "檔案列表", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, + {"F", "編輯檔案", {MC_EDITFILE, 1, {'f'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -768,13 +768,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -782,7 +782,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToFiles", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, + {"T", "檔案列表", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -824,13 +824,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -910,8 +910,8 @@ NULL_MENU, NULL_MENU, NULL_MENU, - {"X", "eXtraHdr", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, - {"!", "toggle NOT", {MC_NOT,1,{'!'}}, KS_NONE}, + {"X", "額外標頭", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, + {"!", "切換 NOT", {MC_NOT,1,{'!'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -938,13 +938,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -952,9 +952,9 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToAddrBk", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE}, - {"X", "eXtraHdr", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, - {"!", "toggle NOT", {MC_NOT,1,{'!'}}, KS_NONE}, + {"T", "地址簿", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE}, + {"X", "額外標頭", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, + {"!", "切換 NOT", {MC_NOT,1,{'!'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -966,13 +966,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -981,10 +981,10 @@ NULL_MENU, NULL_MENU, NULL_MENU, - {"X", "eXtraHdr", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, - {"!", "toggle NOT", {MC_NOT,1,{'!'}}, KS_NONE}, + {"X", "額外標頭", {MC_ADDHDR, 1, {'x'}}, KS_NONE}, + {"!", "切換 NOT", {MC_NOT,1,{'!'}}, KS_NONE}, NULL_MENU, - {"R", "RemoveHdr", {MC_DELHDR, 1, {'r'}}, KS_NONE}, + {"R", "移除標頭", {MC_DELHDR, 1, {'r'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU}; @@ -994,13 +994,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -1008,7 +1008,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToAddrBk", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE}, + {"T", "地址簿", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1022,13 +1022,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -1036,7 +1036,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToFldrs", {MC_CHOICED, 2, {'t', ctrl('T')}}, KS_NONE}, + {"T", "檔案匣列表", {MC_CHOICED, 2, {'t', ctrl('T')}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1050,13 +1050,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -1064,7 +1064,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToFldrs", {MC_CHOICEE, 2, {'t', ctrl('T')}}, KS_NONE}, + {"T", "檔案匣列表", {MC_CHOICEE, 2, {'t', ctrl('T')}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1078,13 +1078,13 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE}, PRYNTTXT_MENU, WHEREIS_MENU, @@ -1092,7 +1092,7 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"T", "ToNicks", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, + {"T", "暱稱列表", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1194,7 +1194,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"*", "[Select]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"*", "[選擇]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1209,7 +1209,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"C", "[Change]", {MC_TOGGLE,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[修改]", {MC_TOGGLE,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1224,8 +1224,8 @@ static struct key color_changing_keys[] = {HELP_MENU, NULL_MENU, - {"E", "To Colors", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"*", "[Select]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "修改色彩", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"*", "[選擇]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1240,8 +1240,8 @@ static struct key custom_color_changing_keys[] = {HELP_MENU, NULL_MENU, - {"E", "To Colors", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"*", "[Select]", {MC_CHOICEB,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "修改色彩", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"*", "[選擇]", {MC_CHOICEB,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1273,8 +1273,8 @@ static struct key color_rgb_changing_keys[] = {HELP_MENU, NULL_MENU, - {"E", "To Colors", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"*", "[Select]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "修改色彩", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"*", "[選擇]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1289,8 +1289,8 @@ static struct key custom_rgb_changing_keys[] = {HELP_MENU, NULL_MENU, - {"E", "To Colors", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"*", "[Select]", {MC_CHOICEB,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "修改色彩", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"*", "[選擇]", {MC_CHOICEB,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1323,7 +1323,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1338,7 +1338,7 @@ {HELP_MENU, OTHER_MENU, EXIT_SETUP_MENU, - {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -1352,8 +1352,8 @@ OTHER_MENU, NULL_MENU, NULL_MENU, - {"D", "DeleteHdr", {MC_DELETE,1,{'d'}}, KS_NONE}, - {"$", "ShuffleHdr", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, + {"D", "刪除標頭", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"$", "重整標頭", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -1366,7 +1366,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, - {"*", "[Select]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"*", "[選擇]", {MC_CHOICE,3,{'*',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -2075,14 +2075,14 @@ {HELP_MENU, PRYNTTXT_MENU, EXIT_SETUP_MENU, - {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, {"A", "Add Printer", {MC_ADD,1,{'a'}}, KS_NONE}, {"D", "DeletePrint", {MC_DELETE,1,{'d'}}, KS_NONE}, - {"C", "Change", {MC_EDIT,1,{'c'}}, KS_NONE}, + {"C", "修改", {MC_EDIT,1,{'c'}}, KS_NONE}, WHEREIS_MENU}; INST_KEY_MENU(printer_edit_keymenu, printer_edit_keys); @@ -2090,7 +2090,7 @@ {HELP_MENU, PRYNTTXT_MENU, EXIT_SETUP_MENU, - {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -2126,11 +2126,11 @@ if(edit_exceptions){ q_status_message(SM_ORDER, 3, 7, - "Exception Setup not implemented for printer"); + "針對印表機的例外設定尚未被實做"); return; } - if(fixed_var(&ps_global->vars[V_PRINTER], "change", "printer")) + if(fixed_var(&ps_global->vars[V_PRINTER], "修改", "印表機")) return; ew = edit_exceptions ? ps_global->ew_for_except_vars : Main; @@ -2171,7 +2171,7 @@ #ifdef OS2 = cpystr("\"Select\" a port or |pipe-command as your default printer."); #else - = cpystr("You may \"Select\" a print command as your default printer."); + = cpystr("可以 \"選擇\" 一列印命令做為預設印表機。"); #endif new_confline(&ctmpa); @@ -2549,8 +2549,8 @@ screen.ro_warning = readonly_warning; vsave = save_config_vars(ps, 0); switch(conf_scroll_screen(ps, &screen, start_line, - edit_exceptions ? "SETUP PRINTER EXCEPTIONS" - : "SETUP PRINTER", + edit_exceptions ? "設定例外印表機" + : "設定印表機", "printer config ", 0)){ case 0: break; @@ -2595,9 +2595,9 @@ fs_give((void **)def_printer_line); *def_printer_line = fs_get(60 + strlen(p)); - sprintf(*def_printer_line, "Default printer %s%s%s%s%s", - set ? "set to \"" : "unset", set ? p : "", set ? "\"" : "", - (set && editing_norm_except_exists) ? " (in exception config)" : "", + sprintf(*def_printer_line, "預設印表機目前%s%s%s%s%s", + set ? "設定為 \"" : "未設定", set ? p : "", set ? "\"" : "", + (set && editing_norm_except_exists) ? " (在例外設定中)" : "", set ? "." : ""); fs_give((void **)&nick); @@ -2608,7 +2608,7 @@ static struct key flag_keys[] = {HELP_MENU, NULL_MENU, - {"E", "Exit Flags", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, TOGGLE_MENU, PREV_MENU, NEXT_MENU, @@ -2731,7 +2731,7 @@ memset(&screen, 0, sizeof(screen)); (void) conf_scroll_screen(ps, &screen, first_line, - "FLAG MAINTENANCE", "configuration ", 0); + "旗標維護", "configuration ", 0); ps->mangled_screen = 1; } @@ -2893,7 +2893,7 @@ if(edit_exceptions && !some_defined){ q_status_message(SM_ORDER, 3, 7, - "No exceptions to edit. First collection exception must be set by editing file"); + "沒有可供編輯的例外項目。第一個集合的例外必須經由編輯檔案的方式設定"); free_contexts(&top); if(reinit_contexts){ free_contexts(&ps_global->context_list); @@ -3009,13 +3009,13 @@ cs->starting_var = fake_fspec; cs->starting_varmem = 0; q_status_message(SM_ORDER, 3, 3, - "Deleted last folder-collection, reverting to default"); + "最後的信件匣總集已被刪除,回復至預設狀態"); } else if(!edit_exceptions && !lval1 && !LVAL(fake_fspec, ew)){ cs->starting_var = fake_fspec; cs->starting_varmem = 0; q_status_message(SM_ORDER, 3, 3, - "Deleted default folder-collection, reverting back to default"); + "最後的預設信件匣總集已被刪除,回復至預設狀態"); } } @@ -3035,7 +3035,7 @@ cs->starting_var = fake_nspec; cs->starting_varmem = 0; q_status_message(SM_ORDER, 3, 3, - "Deleted last news-collection, reverting to default"); + "最後的新聞總集已被刪除,回復至預設狀態"); } else if(!edit_exceptions && !lval2 && !LVAL(fake_nspec, ew) && ps->VAR_NEWS_SPEC && ps->VAR_NEWS_SPEC[0] && @@ -3043,7 +3043,7 @@ cs->starting_var = fake_nspec; cs->starting_varmem = 0; q_status_message(SM_ORDER, 3, 3, - "Deleted default news-collection, reverting back to default"); + "最後的預設新聞總集已被刪除,回復至預設狀態"); } } @@ -3146,7 +3146,7 @@ if(!ccs_var_insert(ps, raw_ctxt, var, lval, count)){ fs_give((void **)&raw_ctxt); q_status_message(SM_ORDER|SM_DING, 3, 3, - "Error adding new collection"); + "新增總集時發生錯誤"); return(0); } @@ -3155,7 +3155,7 @@ (*cl)->d.c.cs->starting_var = var; (*cl)->d.c.cs->starting_varmem = count; q_status_message(SM_ORDER, 0, 3, - "New collection added. Use \"$\" to adjust order."); + "新的總集已被加入。使用 \"$\" 來調整順序。"); return(15); } @@ -3194,7 +3194,7 @@ ekey[n].ch = 'u'; ekey[n].rval = 'u'; ekey[n].name = "U"; - ekey[n++].label = "Up"; + ekey[n++].label = "上"; deefault = 'u'; } } @@ -3212,7 +3212,7 @@ ekey[n].ch = 'd'; ekey[n].rval = 'd'; ekey[n].name = "D"; - ekey[n++].label = "Down"; + ekey[n++].label = "下"; if(!deefault) deefault = 'd'; } @@ -3230,7 +3230,7 @@ switch(cmd){ case 'x': default: - cmd_cancelled("Shuffle"); + cmd_cancelled("重整"); return(0); case 'u': @@ -3290,7 +3290,7 @@ } else{ q_status_message(SM_ORDER, 3, 3, - "Trouble shuffling, cancelled"); + "重整時發生錯誤,已取消"); return(0); } } @@ -3298,14 +3298,14 @@ (*cl)->d.c.cs->starting_var = other_var; (*cl)->d.c.cs->starting_varmem = starting_varmem; - q_status_message(SM_ORDER, 0, 3, "Collections shuffled"); + q_status_message(SM_ORDER, 0, 3, "已重整總集"); return(15); } if(news_problem) - q_status_message(SM_ORDER, 0, 3, "Sorry, cannot Shuffle news to top"); + q_status_message(SM_ORDER, 0, 3, "很抱歉,無法將新聞重整至頂端"); else - q_status_message(SM_ORDER, 0, 3, "Sorry, nothing to Shuffle"); + q_status_message(SM_ORDER, 0, 3, "很抱歉,沒有可供重整的項目"); return(0); } @@ -3333,7 +3333,7 @@ if(p = strstr(tpath, "%s")) *p = '\0'; - if(raw_ctxt = context_edit_screen(ps, "EDIT", (*cl)->d.c.ct->nickname, + if(raw_ctxt = context_edit_screen(ps, "編輯", (*cl)->d.c.ct->nickname, (*cl)->d.c.ct->server, tpath, (*cl)->d.c.ct->dir ? (*cl)->d.c.ct->dir->view.user @@ -3358,7 +3358,7 @@ return(0); } - q_status_message(SM_ORDER, 0, 3, "Collection list entry updated"); + q_status_message(SM_ORDER, 0, 3, "總集列表項目已被更新"); return(15); } @@ -3390,7 +3390,7 @@ return(0); } - sprintf(tmp, "Delete the collection definition for \"%.40s\"", + sprintf(tmp, "刪除給 \"%.40s\" 的總集定義", (*cl)->value); if(want_to(tmp, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ @@ -3426,12 +3426,12 @@ return(0); } - q_status_message(SM_ORDER, 0, 3, "Collection deleted"); + q_status_message(SM_ORDER, 0, 3, "總集已被刪除"); return(15); } - q_status_message(SM_ORDER, 0, 3, "No collections deleted"); + q_status_message(SM_ORDER, 0, 3, "沒有任何總集被刪除"); return(0); } @@ -3720,17 +3720,17 @@ #ifdef ENABLE_LDAP -static char *srch_res_help_title = "HELP FOR SEARCH RESULTS INDEX"; -#define ADD_FIRST_LDAP_SERVER "Use Add to add a directory server" +static char *srch_res_help_title = "搜尋結果索引的輔助說明"; +#define ADD_FIRST_LDAP_SERVER "使用 Add 來新增一個目錄伺服器" #define ADDR_SELECT_EXIT_VAL 5 #define ADDR_SELECT_GOBACK_VAL 6 #define ADDR_SELECT_FORCED_EXIT_VAL 7 static struct key addr_select_keys[] = {HELP_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, NULL_MENU, - {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, @@ -3744,29 +3744,29 @@ static struct key addr_select_with_goback_keys[] = {HELP_MENU, NULL_MENU, - {"<", "AddressBkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, - {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"<", "地址簿列表", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, + {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, NULL_MENU, NULL_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, WHEREIS_MENU}; INST_KEY_MENU(addr_s_km_with_goback, addr_select_with_goback_keys); static struct key addr_select_with_view_keys[] = {HELP_MENU, RCOMPOSE_MENU, - {"<", "AddressBkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, - {">", "[View]", + {"<", "地址簿列表", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, + {">", "[檢視]", {MC_VIEW_TEXT,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"C", "ComposeTo", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER}, + {"C", "編修", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER}, FWDEMAIL_MENU, SAVE_MENU, WHEREIS_MENU}; @@ -3775,14 +3775,14 @@ static struct key addr_select_for_url_keys[] = {HELP_MENU, RCOMPOSE_MENU, - {"<", "Exit Viewer", {MC_ADDRBOOK,3,{'<',',','e'}}, KS_NONE}, - {">", "[View]", + {"<", "離開", {MC_ADDRBOOK,3,{'<',',','e'}}, KS_NONE}, + {">", "[檢視]", {MC_VIEW_TEXT,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREV_MENU, NEXT_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"C", "ComposeTo", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER}, + {"C", "編修", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER}, FWDEMAIL_MENU, SAVE_MENU, WHEREIS_MENU}; @@ -3791,7 +3791,7 @@ static struct key addr_select_exit_keys[] = {NULL_MENU, NULL_MENU, - {"E", "[Exit]", {MC_EXIT,3,{'e',ctrl('M'),ctrl('J')}}, + {"E", "[離開]", {MC_EXIT,3,{'e',ctrl('M'),ctrl('J')}}, KS_EXITMODE}, NULL_MENU, NULL_MENU, @@ -3807,7 +3807,7 @@ static struct key addr_select_goback_keys[] = {NULL_MENU, NULL_MENU, - {"E", "[Exit]", {MC_ADDRBOOK,3,{'e',ctrl('M'),ctrl('J')}}, + {"E", "[離開]", {MC_ADDRBOOK,3,{'e',ctrl('M'),ctrl('J')}}, KS_EXITMODE}, NULL_MENU, NULL_MENU, @@ -3891,7 +3891,7 @@ char *dn, *a; char **cn, **org, **unit, **title, **mail, **sn; BerElement *ber; - static char no_email[] = ""; + static char no_email[] = "<無法取得電子郵件地址>"; int indent, have_mail; dn = NULL; @@ -4196,10 +4196,10 @@ first_line = ctmpa; strncpy(ee, "[ ", 3); if(wp_err && wp_err->ldap_errno) - sprintf(ee+2, "%.100s, No Matches Returned", + sprintf(ee+2, "%.100s, 沒有符合的結果被傳回", ldap_err2string(wp_err->ldap_errno)); else - strncat(ee, "No Matches", 100); + strncat(ee, "沒有符合的", 100); strncat(ee, " -- Choose Exit ]", 50); ctmpa->value = cpystr(ee); @@ -4311,7 +4311,7 @@ case MC_CHOICE : if(flags & CF_PRIVATE){ q_status_message(SM_ORDER | SM_DING, 0, 3, - "No email address available for this entry; choose another or ExitSelect"); + "本項目中沒有電子郵件地址;請選其他的項目或離開"); } else if(some_selectable){ (*cl)->d.a.ac->selected_ld = (*cl)->d.a.ld; @@ -4379,15 +4379,15 @@ static struct key direct_config_keys[] = {HELP_MENU, NULL_MENU, - {"E", "Exit Setup", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, - {"P", "PrevDir", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, - {"N", "NextDir", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"P", "前一目錄", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, + {"N", "次一目錄", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Dir", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Del Dir", {MC_DELETE,1,{'d'}}, KS_NONE}, - {"$", "Shuffle", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, + {"A", "新增目錄", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除目錄", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"$", "重整", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, WHEREIS_MENU}; INST_KEY_MENU(dir_conf_km, direct_config_keys); @@ -4460,7 +4460,7 @@ if(edit_exceptions){ q_status_message(SM_ORDER, 3, 7, - "Exception Setup not implemented for directory"); + "針對目錄的例外設定尚未被實做"); return; } @@ -4499,7 +4499,7 @@ memset(&screen, 0, sizeof(screen)); screen.deferred_ro_warning = readonly_warning; (void)conf_scroll_screen(ps, &screen, first_line, - "SETUP DIRECTORY SERVERS", "servers ", 0); + "設定目錄伺服器", "servers ", 0); ps->mangled_screen = 1; } @@ -4519,20 +4519,20 @@ case MC_DELETE : if(first_one) q_status_message(SM_ORDER|SM_DING, 0, 3, - "Nothing to Delete, use Add"); + "沒有可供刪除的項目,請用新增"); else dir_config_del(ps, cl); break; case MC_ADD : - if(!fixed_var((*cl)->var, NULL, "directory list")) + if(!fixed_var((*cl)->var, NULL, "地址列表")) dir_config_add(ps, cl); break; case MC_EDIT : - if(!fixed_var((*cl)->var, NULL, "directory list")){ + if(!fixed_var((*cl)->var, NULL, "地址列表")){ if(first_one) dir_config_add(ps, cl); else @@ -4542,10 +4542,10 @@ break; case MC_SHUFFLE : - if(!fixed_var((*cl)->var, NULL, "directory list")){ + if(!fixed_var((*cl)->var, NULL, "地址列表")){ if(first_one) q_status_message(SM_ORDER|SM_DING, 0, 3, - "Nothing to Shuffle, use Add"); + "沒有可供重整的項目,請用新增"); else dir_config_shuffle(ps, cl); } @@ -4684,7 +4684,7 @@ write_pinerc(ps, ew, WRP_NONE); } else - q_status_message(SM_ORDER, 0, 3, "Add cancelled, no server name"); + q_status_message(SM_ORDER, 0, 3, "沒有伺服器名稱,取消新增"); } free_ldap_server_info(&info); @@ -4718,7 +4718,7 @@ if(cnt < 2){ q_status_message(SM_ORDER, 0, 3, - "Shuffle only makes sense when there is more than one server in list"); + "僅在定義了多個伺服器之後,重整才能發揮作用"); return; } @@ -4729,12 +4729,12 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; - opts[i++].label = "Up"; + opts[i++].label = "上"; opts[i].ch = 'd'; opts[i].rval = 'd'; opts[i].name = "D"; - opts[i++].label = "Down"; + opts[i++].label = "下"; opts[i].ch = -1; deefault = 'u'; @@ -4746,11 +4746,11 @@ else if(current_num == cnt - 1) /* no down */ opts[1].ch = -2; - sprintf(tmp, "Shuffle \"%.100s\" %s%s%s ? ", + sprintf(tmp, "重整 \"%.100s\" %s%s%s ? ", (*cl)->value, - (opts[0].ch != -2) ? "UP" : "", + (opts[0].ch != -2) ? "往上" : "", (opts[0].ch != -2 && opts[1].ch != -2) ? " or " : "", - (opts[1].ch != -2) ? "DOWN" : ""); + (opts[1].ch != -2) ? "往下" : ""); help = (opts[0].ch == -2) ? h_dir_shuf_down : (opts[1].ch == -2) ? h_dir_shuf_up : h_dir_shuf; @@ -4760,7 +4760,7 @@ switch(rv){ case 'x': - cmd_cancelled("Shuffle"); + cmd_ cancelled("重整"); return; case 'u': @@ -4798,7 +4798,7 @@ free_list_array(&new_list); if(j){ q_status_message(SM_ORDER, 0, 3, - "Shuffle cancelled: couldn't save configuration file"); + "取消重整:無法存入設定檔"); set_current_val((*cl)->var, TRUE, FALSE); return; } @@ -4856,10 +4856,10 @@ if(lval && lval[(*cl)->varmem] && strcmp(lval[(*cl)->varmem], raw_server) == 0) - q_status_message(SM_ORDER, 0, 3, "No change, cancelled"); + q_status_message(SM_ORDER, 0, 3, "沒有改變,已取消"); else if(!(info && info->serv && *info->serv)) q_status_message(SM_ORDER, 0, 3, - "Change cancelled, use Delete if you want to remove this server"); + "已取消改變,如果想移除這個伺服器,請使用 Delete"); else{ char *subtitle; int i, cnt; @@ -5128,7 +5128,7 @@ /* Server */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR LDAP SERVER"; + ctmp->help_title= "LDAP 伺服器的輔助說明"; ctmp->var = &server_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5143,7 +5143,7 @@ /* Search Base */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SERVER SEARCH BASE"; + ctmp->help_title= "伺服器搜尋基底的輔助說明"; ctmp->var = &base_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5156,7 +5156,7 @@ /* Port */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR PORT NUMBER"; + ctmp->help_title= "埠號(port number)的輔助說明"; ctmp->var = &port_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5170,7 +5170,7 @@ /* Nickname */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SERVER NICKNAME"; + ctmp->help_title= "伺服器暱稱的輔助說明"; ctmp->var = &nick_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5227,7 +5227,7 @@ for(i = 0; f = ldap_feature_list(i); i++){ new_confline(&ctmp); ctmp->var = &opt_var; - ctmp->help_title= "HELP FOR LDAP FEATURES"; + ctmp->help_title= "LDAP 特色的輔助說明"; ctmp->varnamep = ctmpb; ctmp->keymenu = &config_checkbox_keymenu; switch(i){ @@ -5301,7 +5301,7 @@ for(i = 0; f = ldap_search_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SEARCH TYPE"; + ctmp->help_title= "搜尋形態的輔助說明"; ctmp->var = &srch_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -5364,7 +5364,7 @@ for(i = 0; f = ldap_search_rules(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SEARCH RULE"; + ctmp->help_title= "搜尋規則的輔助說明"; ctmp->var = &srch_rule_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -5387,7 +5387,7 @@ /* Email attribute name */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR EMAIL ATTRIBUTE NAME"; + ctmp->help_title= "電子郵件屬性的輔助說明"; ctmp->var = &mailattr_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5400,7 +5400,7 @@ /* Name attribute name */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR NAME ATTRIBUTE NAME"; + ctmp->help_title= "名稱屬性的輔助說明"; ctmp->var = &cnattr_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5413,7 +5413,7 @@ /* Surname attribute name */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SURNAME ATTRIBUTE NAME"; + ctmp->help_title= "姓氏屬性的輔助說明"; ctmp->var = &snattr_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5426,7 +5426,7 @@ /* Givenname attribute name */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR GIVEN NAME ATTRIBUTE NAME"; + ctmp->help_title= "教名屬性的輔助說明"; ctmp->var = &gnattr_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5444,7 +5444,7 @@ /* Time limit */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SERVER TIMELIMIT"; + ctmp->help_title= "伺服器時限的輔助說明"; ctmp->var = &time_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5459,7 +5459,7 @@ /* Size limit */ new_confline(&ctmp); ctmp->var = &size_var; - ctmp->help_title= "HELP FOR SERVER SIZELIMIT"; + ctmp->help_title= "伺服器大小限制的輔助說明"; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; ctmp->help = h_config_ldap_size; @@ -5476,7 +5476,7 @@ /* Custom Search Filter */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR CUSTOM SEARCH FILTER"; + ctmp->help_title= "自定搜尋過濾器的輔助說明"; ctmp->var = &cust_var; ctmp->valoffset = 23; ctmp->keymenu = &config_text_keymenu; @@ -5488,7 +5488,7 @@ ctmp->value = pretty_value(ps, ctmp); - sprintf(tmp, "%s DIRECTORY SERVER", title); + sprintf(tmp, "%s 目錄伺服器", title); memset(&screen, 0, sizeof(screen)); screen.ro_warning = saved_screen ? saved_screen->deferred_ro_warning : 0; rv = conf_scroll_screen(ps, &screen, first_line, tmp, "servers ", 0); @@ -5748,7 +5748,7 @@ } else q_status_message(SM_ORDER, 3, 3, - "Can't delete sys-admin defined value"); + "無法刪除系統管理員定義的設定值。"); } else{ int cnt, ans = 0, no_ex; @@ -5774,20 +5774,20 @@ */ if(!lval && cnt > 1){ static ESCKEY_S opts[] = { - {'i', 'i', "I", "Ignore All"}, - {'r', 'r', "R", "Remove One"}, + {'i', 'i', "I", "忽略全部"}, + {'r', 'r', "R", "移除一個"}, {-1, 0, NULL, NULL}}; ans = radio_buttons( - "Ignore all default directory servers or just remove this one ? ", + "忽略所有預設的目錄伺服器或僅移除這臺?", -FOOTER_ROWS(ps), opts, 'i', 'x', h_ab_del_dir_ignore, RB_NORM, NULL); } if(ans == 0) - sprintf(prompt, "Really delete %.10s \"%.30s\" from directory servers ", + sprintf(prompt, "真的自目錄伺服器中刪除%.10s \"%.30s\"", ((*cl)->value && *(*cl)->value) - ? "server" - : "item", + ? "伺服器" + : "項目", ((*cl)->value && *(*cl)->value) ? (*cl)->value : int2string((*cl)->varmem + 1)); @@ -5883,7 +5883,7 @@ CONF_S *first_line = NULL; q_status_message(SM_ORDER, 0, 3, - "Reverting to default directory server"); + "回復至預設的目錄伺服器"); dir_init_display(ps, cl, servers, &ps->vars[V_LDAP_SERVERS], &first_line); *cl = first_line; @@ -5923,7 +5923,7 @@ } } else - q_status_message(SM_ORDER, 0, 3, "Server not deleted"); + q_status_message(SM_ORDER, 0, 3, "伺服器未被刪除"); } if(rv == 1){ @@ -5947,7 +5947,7 @@ int (*tool)(); { new_confline(ctmp); - (*ctmp)->help_title= "HELP FOR DIRECTORY SERVER CONFIGURATION"; + (*ctmp)->help_title= "目錄伺服器設定的輔助說明"; (*ctmp)->value = cpystr(ADD_FIRST_LDAP_SERVER); (*ctmp)->var = var; (*ctmp)->varmem = 0; @@ -6010,7 +6010,7 @@ p->next = b; } - (*ctmp)->help_title= "HELP FOR DIRECTORY SERVER CONFIGURATION"; + (*ctmp)->help_title= "目錄伺服器設定的輔助說明"; (*ctmp)->value = serv; (*ctmp)->var = var; (*ctmp)->varmem = member; @@ -6302,7 +6302,7 @@ so_puts(srcstore, (*cl)->d.t.exportval); so_puts(srcstore, "\n"); something_to_export++; - prompt_msg = "selection"; + prompt_msg = "選擇"; } } else{ @@ -6317,20 +6317,20 @@ so_puts(srcstore, ctmp->d.t.exportval); so_puts(srcstore, "\n"); something_to_export++; - prompt_msg = "selections"; + prompt_msg = "選擇"; } } } } if(!srcstore) - q_status_message(SM_ORDER, 0, 3, "Error allocating space"); + q_status_message(SM_ORDER, 0, 3, "配置空間時發生錯誤"); else if(something_to_export) simple_export(ps, so_text(srcstore), srctype, prompt_msg, NULL); else if(!some_selected && *(*cl)->d.t.listmode == ListMode) - q_status_message(SM_ORDER, 0, 3, "Use \"X\" to mark selections"); + q_status_message(SM_ORDER, 0, 3, "以 \"X\" 標示出選擇"); else - q_status_message(SM_ORDER, 0, 3, "Nothing to export"); + q_status_message(SM_ORDER, 0, 3, "沒有可供輸出的項目"); if(srcstore) so_give(&srcstore); @@ -6489,9 +6489,9 @@ if(screen && screen->ro_warning) q_status_message1(SM_ORDER, 1, 3, - "%.200s can't change options or settings", - ps_global->restricted ? "Pine demo" - : "Config file not changeable,"); + "%.200s 無法改變選項或設定", + ps_global->restricted ? "Pine 展示版" + : "無法改變的設定檔,"); screen->current = start_line; if(start_line && start_line->flags & CF_CHANGES) @@ -6677,7 +6677,7 @@ ps->mangled_screen = 1; } else - q_status_message(SM_ORDER,0,3,"No help yet."); + q_status_message(SM_ORDER,0,3,"尚無輔助說明。"); break; @@ -6751,7 +6751,7 @@ if(i) config_scroll_up(i); else - q_status_message(SM_ORDER,0,1, "Already at end of screen"); + q_status_message(SM_ORDER,0,1, "已經在畫面的結尾了"); } break; @@ -6793,7 +6793,7 @@ } else q_status_message(SM_ORDER, 0, 1, - "Already at start of screen"); + "已經在畫面的起始了"); break; @@ -6837,7 +6837,7 @@ if(ctmpa == screen->current){ q_status_message(SM_ORDER,0,1, - "Already at end of screen"); + "已經在畫面的結尾了"); goto no_down; } @@ -6882,7 +6882,7 @@ if(!ctmpa){ ctmpa = screen->current; q_status_message(SM_ORDER, 0, 1, - "Already at start of screen"); + "已經在畫面的起始了"); } } @@ -7061,13 +7061,13 @@ HelpType help; static ESCKEY_S ekey[] = { {0, 0, "", ""}, - {ctrl('Y'), 10, "^Y", "Top"}, - {ctrl('V'), 11, "^V", "Bottom"}, + {ctrl('Y'), 10, "^Y", "頂端"}, + {ctrl('V'), 11, "^V", "底端"}, {-1, 0, NULL, NULL}}; ps->mangled_footer = 1; buf[0] = '\0'; - sprintf(tmp, "Word to find %s%.64s%s: ", + sprintf(tmp, "欲搜尋的單字 %s%.64s%s: ", (last[0]) ? "[" : "", (last[0]) ? last : "", (last[0]) ? "]" : ""); @@ -7206,7 +7206,7 @@ result = "Searched to bottom"; } else - result = "WhereIs cancelled"; + result = "取消搜尋"; if((found & FOUND_IT) && ctmpa){ strncpy(last, buf, 64); @@ -7229,7 +7229,7 @@ screen->current = ctmpa; } - q_status_message(SM_ORDER,0,3,result ? result : "Word not found"); + q_status_message(SM_ORDER,0,3,result ? result : "找不到該字"); } break; @@ -7248,9 +7248,9 @@ } else q_status_message1(SM_ORDER|SM_DING, 1, 3, - "%.200s can't change options or settings", - ps_global->restricted ? "Pine demo" - : "Config file not changeable,"); + "%.200s無法改變選項或設定", + ps_global->restricted ? "Pine 展示版" + : "無法改變的設定檔,"); } else if(screen->current->tool){ unsigned flags; @@ -7262,9 +7262,9 @@ &screen->current, flags)){ case -1: q_status_message2(SM_ORDER, 0, 2, - "Command \"%.200s\" not defined here.%.200s", + "命令 \"%.200s\" 未在此定義。%.200s", pretty_command(ch), - F_ON(F_BLANK_KEYMENU,ps) ? "" : " See key menu below."); + F_ON(F_BLANK_KEYMENU,ps) ? "" : "請參考下列的按鍵清單。"); break; case 0: @@ -8097,11 +8097,11 @@ ekey[1].ch = ctrl('P'); ekey[1].rval = ctrl('P'); ekey[1].name = "^P"; - ekey[1].label = "Decrease"; + ekey[1].label = "減少"; ekey[2].ch = ctrl('N'); ekey[2].rval = ctrl('N'); ekey[2].name = "^N"; - ekey[2].label = "Increase"; + ekey[2].label = "增加"; ekey[3].ch = KEY_DOWN; ekey[3].rval = ctrl('P'); ekey[3].name = ""; @@ -8115,12 +8115,12 @@ switch(cmd){ case MC_ADD: /* add to list */ - if(fixed_var((*cl)->var, "add to", NULL)){ + if(fixed_var((*cl)->var, "新增", NULL)){ break; } else if(!(*cl)->var->is_list && pval){ q_status_message(SM_ORDER, 3, 3, - "Only single value allowed. Use \"Change\"."); + "僅允許\單一設定值。請用 \"修改\"。"); } else{ int maxwidth; @@ -8144,7 +8144,7 @@ } sprintf(prompt, - "Enter text to insert before \"%.*s\": ",k,tmpval); + "輸入插在 \"%.*s\" 之前的字串:",k,tmpval); } else if((*cl)->var->is_list && !lval @@ -8153,13 +8153,13 @@ ekey[0].ch = 'r'; ekey[0].rval = 'r'; ekey[0].name = "R"; - ekey[0].label = "Replace"; + ekey[0].label = "取代"; ekey[1].ch = 'a'; ekey[1].rval = 'a'; ekey[1].name = "A"; - ekey[1].label = "Add To"; + ekey[1].label = "加至"; ekey[2].ch = -1; - strcpy(prompt, "Replace or Add To default value ? "); + strcpy(prompt, "取代(R)或加至(A)預設值?"); switch(radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'a', 'x', h_config_replace_add, RB_NORM, NULL)){ case 'a': @@ -8173,8 +8173,8 @@ } add_text: - sprintf(prompt, "Enter the %stext to be added : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想加入的%s字:", + flags&CF_NUMBER ? "數" : "文"); break; case 'r': @@ -8184,19 +8184,19 @@ sval[oebufsize-1] = '\0'; } - sprintf(prompt, "Enter the %sreplacement text : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想取代的%s字:", + flags&CF_NUMBER ? "數" : "文"); break; case 'x': i = 1; - cmd_cancelled("Add"); + cmd_cancelled("新增"); break; } } else - sprintf(prompt, "Enter the %stext to be added : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想加入的%s字:", + flags&CF_NUMBER ? "數" : "文"); ps->mangled_footer = 1; @@ -8211,7 +8211,7 @@ ekey[0].ch = ctrl('W'); ekey[0].rval = 5; ekey[0].name = "^W"; - ekey[0].label = after ? "InsertBefore" : "InsertAfter"; + ekey[0].label = after ? "插在前面" : "插在後面"; ekey[1].ch = -1; } else if(!(flags&CF_NUMBER)) @@ -8272,7 +8272,7 @@ } else{ q_status_message1(SM_ORDER, 0, 3, - "Can't add %.200s to list", empty_val); + "無法將 %.200s 加至列表中", empty_val); rv = ps->mangled_body = 0; } @@ -8280,7 +8280,7 @@ } else{ q_status_message1(SM_ORDER, 0, 3, - "Can't add %.200s to list", empty_val); + "無法將 %.200s 加至列表中", empty_val); } } else{ @@ -8288,7 +8288,7 @@ && !(isdigit((unsigned char)sval[0]) || sval[0] == '-' || sval[0] == '+')){ q_status_message(SM_ORDER,3,3, - "Entry must be numeric"); + "該項目必須是數字"); i = 3; /* to keep loop going */ continue; } @@ -8305,7 +8305,7 @@ } } else if(i == 1){ - cmd_cancelled("Add"); + cmd_cancelled("新增"); } else if(i == 3){ help = help == NO_HELP ? h_config_add : NO_HELP; @@ -8330,8 +8330,8 @@ } sprintf(prompt, - "Enter text to insert %s \"%.*s\": ", - after ? "after" : "before", k, tmpval); + "輸入想要插在 \"%.*s\" %s的文字", + after ? "之後" : "之前", k, tmpval); continue; } else if(i == ctrl('P')){ @@ -8351,7 +8351,7 @@ */ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, - "Minimum value is %.200s", comatose(lowrange)); + "最小值是 %.200s", comatose(lowrange)); repeat_key = -5; } } @@ -8375,7 +8375,7 @@ if(numval == hirange){ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, - "Maximum value is %.200s", comatose(hirange)); + "最大值是 %.200s", comatose(hirange)); repeat_key = -5; } } @@ -8400,7 +8400,7 @@ && (*cl)->var->current_val.p){ char pmt[80]; - sprintf(pmt, "Override default with %.20s", empty_val2); + sprintf(pmt, "以 %.20s 覆蓋\預設值", empty_val2); if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ sval[0] = '\0'; *apval = cpystr(sval); @@ -8413,7 +8413,7 @@ && (*cl)->var->current_val.l){ char pmt[80]; - sprintf(pmt, "Override default with %.20s", empty_val2); + sprintf(pmt, "以 %.20s 覆蓋\預設值", empty_val2); if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ char **ltmp; @@ -8428,11 +8428,11 @@ } else if(((*cl)->var->is_list && !lval) || (!(*cl)->var->is_list && !pval)){ - q_status_message(SM_ORDER, 0, 3, "No set value to delete"); + q_status_message(SM_ORDER, 0, 3, "沒有可供刪除的設定值"); } else{ if((*cl)->var->is_fixed) - sprintf(prompt, "Delete (unused) %.30s from %.20s ", + sprintf(prompt, "刪除 (未使用的) %.30s 自 %.20s 中", (*cl)->var->is_list ? (!*lval[(*cl)->varmem]) ? empty_val2 @@ -8444,7 +8444,8 @@ : "", (*cl)->var->name); else - sprintf(prompt, "Really delete %s%.20s from %.30s ", + sprintf(prompt, "確定自 %.30s 刪除 %s%.20s ", + (*cl)->var->name, (*cl)->var->is_list ? "item " : "", (*cl)->var->is_list ? int2string((*cl)->varmem + 1) @@ -8478,7 +8479,7 @@ } } else - q_status_message(SM_ORDER, 0, 3, "Value not deleted"); + q_status_message(SM_ORDER, 0, 3, "設定值未被刪除"); } break; @@ -8646,7 +8647,7 @@ && !(isdigit((unsigned char)sval[0]) || sval[0] == '-' || sval[0] == '+')){ q_status_message(SM_ORDER,3,3, - "Entry must be numeric"); + "該項目必須是數字"); continue; } @@ -8660,7 +8661,7 @@ } } else if(i == 1){ - cmd_cancelled("Change"); + cmd_cancelled("改變"); } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; @@ -8678,7 +8679,7 @@ */ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, - "Minimum value is %.200s", comatose(lowrange)); + "最小值是 %.200s", comatose(lowrange)); repeat_key = -5; } } @@ -8694,7 +8695,7 @@ if(numval == hirange){ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, - "Maximum value is %.200s", comatose(hirange)); + "最大值是 %.200s", comatose(hirange)); repeat_key = -5; } } @@ -8715,7 +8716,7 @@ case MC_SHUFFLE: if(!((*cl)->var && (*cl)->var->is_list)){ q_status_message(SM_ORDER, 0, 2, - "Can't shuffle single-valued setting"); + "無法重整僅有單一值之設定"); break; } @@ -8730,7 +8731,7 @@ if((previndex < 0 && nextindex < 0) || !*alval){ q_status_message(SM_ORDER, 0, 3, - "Shuffle only makes sense when there is more than one value defined"); + "僅在多個值被定義時重整才有意義"); break; } @@ -8739,12 +8740,12 @@ ekey[i].ch = 'u'; ekey[i].rval = 'u'; ekey[i].name = "U"; - ekey[i++].label = "Up"; + ekey[i++].label = "上"; ekey[i].ch = 'd'; ekey[i].rval = 'd'; ekey[i].name = "D"; - ekey[i++].label = "Down"; + ekey[i++].label = "下"; ekey[i].ch = -1; deefault = 'u'; @@ -8769,7 +8770,7 @@ switch(i){ case 'x': - cmd_cancelled("Shuffle"); + cmd_cancelled("重整"); return(rv); case 'u': @@ -8895,16 +8896,16 @@ if(flags & CF_CHANGES){ switch(want_to(EXIT_PMT, 'y', 'x', h_config_undo, WT_FLUSH_IN)){ case 'y': - q_status_message1(SM_ORDER,0,3,"%.200s changes saved", cmd); + q_status_message1(SM_ORDER,0,3,"%.200s 的改變已存檔", cmd); return(2); case 'n': - q_status_message1(SM_ORDER,3,5,"No %.200s changes saved", cmd); + q_status_message1(SM_ORDER,3,5,"%.200s 改變未存檔", cmd); return(10); case 'x': /* ^C */ default : - q_status_message(SM_ORDER,3,5,"Changes not yet saved"); + q_status_message(SM_ORDER,3,5,"改變尚未被存檔"); return(0); } } @@ -9210,10 +9211,10 @@ if(fixed_var((*cl)->var, NULL, NULL)){ if(((*cl)->var->post_user_val.p || (*cl)->var->main_user_val.p) - && want_to("Delete old unused personal option setting", + && want_to("刪除舊有未使用的個人選項設定", 'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ delete_user_vals((*cl)->var); - q_status_message(SM_ORDER, 0, 3, "Deleted"); + q_status_message(SM_ORDER, 0, 3, "已刪除"); rv = 1; } @@ -9434,10 +9435,10 @@ case MC_TOGGLE: /* toggle yes to no and back */ if(fixed_var((*cl)->var, NULL, NULL)){ if(((*cl)->var->post_user_val.p || (*cl)->var->main_user_val.p) - && want_to("Delete old unused personal option setting", + && want_to("刪除舊有未使用的個人選項設定", 'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ delete_user_vals((*cl)->var); - q_status_message(SM_ORDER, 0, 3, "Deleted"); + q_status_message(SM_ORDER, 0, 3, "已刪除"); rv = 1; } @@ -9527,7 +9528,7 @@ } else q_status_message(SM_ORDER,3,5, - "Trouble setting default printer"); + "有問題的預設印表機"); retval = 1; } @@ -9541,7 +9542,7 @@ } else q_status_message(SM_ORDER,3,5, - "Trouble setting default printer"); + "設定預設印表機時發生問題"); retval = 1; } @@ -9555,7 +9556,7 @@ } else q_status_message(SM_ORDER,3,5, - "Trouble setting default printer"); + "設定預設印表機時發生問題"); retval = 1; } @@ -9569,7 +9570,7 @@ } else q_status_message(SM_ORDER,3,5, - "Trouble setting default printer"); + "設定預設印表機時發生問題"); retval = 1; } @@ -9583,7 +9584,7 @@ } else q_status_message(SM_ORDER,3,5, - "Trouble setting default printer"); + "設定預設印表機時發生問題"); retval = 1; } @@ -9618,12 +9619,12 @@ } q_status_message4(SM_ORDER, 0, 3, - "Default printer%.200s %.200s%.200s%.200s", + "預設印表機目前%.200s %.200s%.200s%.200s", ((!printer_was && !ps->VAR_PRINTER) || (printer_was && ps->VAR_PRINTER && !strcmp(printer_was,ps->VAR_PRINTER))) - ? " still" : "", - p ? "set to \"" : "unset", + ? " 仍然" : "", + p ? "設定為 \"" : "未設定", p ? p : "", p ? "\"" : ""); if(p) @@ -9667,23 +9668,23 @@ switch(cmd){ case MC_ADD: /* add to list */ sval[0] = '\0'; - if(!fixed_var((*cl)->var, "add to", NULL)){ + if(!fixed_var((*cl)->var, "新增", NULL)){ if(lval && (*cl)->value){ - strcpy(prompt, "Enter printer name : "); + strcpy(prompt, "輸入印表機名稱:"); } else if(!lval && nelval){ /* Add to list which doesn't exist, but default does exist */ ekey[0].ch = 'r'; ekey[0].rval = 'r'; ekey[0].name = "R"; - ekey[0].label = "Replace"; + ekey[0].label = "取代"; ekey[1].ch = 'a'; ekey[1].rval = 'a'; ekey[1].name = "A"; - ekey[1].label = "Add To"; + ekey[1].label = "新增"; ekey[2].ch = -1; - strcpy(prompt, "Replace or Add To default value ? "); + strcpy(prompt, "取代或新增至預設值?"); switch(i = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'a', 'x', h_config_replace_add, RB_NORM, NULL)){ @@ -9701,17 +9702,17 @@ ltmp[k + 1] = ltmp[k] = NULL; add_text: - strcpy(prompt, "Enter name of printer to be added : "); + strcpy(prompt, "欲新增的印表機名稱:"); break; case 'r': replace_text: strcpy(prompt, - "Enter the name for replacement printer : "); + "欲取代的印表機名:"); break; case 'x': - cmd_cancelled("Add"); + cmd_cancelled("新增"); break; } @@ -9719,7 +9720,7 @@ break; } else - strcpy(prompt, "Enter name of printer to be added : "); + strcpy(prompt, "欲新增的印表機名稱:"); ps->mangled_footer = 1; help = NO_HELP; @@ -9731,7 +9732,7 @@ ekey[0].ch = ctrl('W'); ekey[0].rval = 5; ekey[0].name = "^W"; - ekey[0].label = after ? "InsertBefore" : "InsertAfter"; + ekey[0].label = after ? "插在之前" : "插在之後"; ekey[1].ch = -1; } else @@ -9747,7 +9748,7 @@ removing_leading_and_trailing_white_space(name); } else if(i == 1){ - cmd_cancelled("Add"); + cmd_cancelled("新增"); } else if(i == 3){ help = (help == NO_HELP) ? h_config_insert_after : NO_HELP; @@ -9765,7 +9766,7 @@ #ifdef OS2 strcpy(prompt, "Enter port or |command : "); #else - strcpy(prompt, "Enter command for printer : "); + strcpy(prompt, "輸入給印表機的命令:"); #endif while(i != 0 && i != 1){ oeflags = OE_APPEND_CURRENT; @@ -9800,7 +9801,7 @@ * Don't allow input of multiple entries at once. */ q_status_message(SM_ORDER,3,5, - "No commas allowed in command"); + "命令中不允許\逗點"); i = 2; continue; } @@ -9815,10 +9816,10 @@ } else q_status_message1(SM_ORDER, 0, 3, - "Can't add %.200s to list", empty_val); + "無法將 %.200s 新增至列表中", empty_val); } else if(i == 1){ - cmd_cancelled("Add"); + cmd_cancelled("新增"); } else if(i == 3){ help = help == NO_HELP ? h_config_print_cmd : NO_HELP; @@ -9856,19 +9857,19 @@ } } else if(!lval){ - q_status_message(SM_ORDER, 0, 3, "No set value to delete"); + q_status_message(SM_ORDER, 0, 3, "沒有可供刪除的設定值"); } else{ if((*cl)->var->is_fixed){ parse_printer(lval[(*cl)->varmem], &nick, &p, NULL, NULL, NULL, NULL); - sprintf(prompt, "Delete (unused) printer %.30s ", + sprintf(prompt, "刪除 (未使用的) 印表機 %.30s ", *nick ? nick : (!*p) ? empty_val2 : p); fs_give((void **)&nick); fs_give((void **)&p); } else - sprintf(prompt, "Really delete item %.20s from printer list ", + sprintf(prompt, "確定自印表機列表中刪除 %.20s", int2string((*cl)->varmem + 1)); ps->mangled_footer = 1; @@ -9878,7 +9879,7 @@ config_del_list_item(cl, &newval); } else - q_status_message(SM_ORDER, 0, 3, "Printer not deleted"); + q_status_message(SM_ORDER, 0, 3, "印表機未被刪除"); } break; @@ -9889,7 +9890,7 @@ && !strucmp(ps->VAR_PRINTER,(*cl)->var->current_val.l[(*cl)->varmem])) changing_selected = 1; - if(fixed_var((*cl)->var, NULL, "printer")) + if(fixed_var((*cl)->var, NULL, "印表機")) break; else if(!lval && nelval) goto replace_text; @@ -9901,22 +9902,22 @@ ekey[0].ch = 'n'; ekey[0].rval = 'n'; ekey[0].name = "N"; - ekey[0].label = "Name"; + ekey[0].label = "名稱"; ekey[1].ch = 'c'; ekey[1].rval = 'c'; ekey[1].name = "C"; - ekey[1].label = "Command"; + ekey[1].label = "命令"; ekey[2].ch = 'o'; ekey[2].rval = 'o'; ekey[2].name = "O"; - ekey[2].label = "Options"; + ekey[2].label = "選項"; ekey[3].ch = -1; - strcpy(prompt, "Change Name or Command or Options ? "); + strcpy(prompt, "修改「名稱」、「命令」或「選項」?"); i = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'c', 'x', h_config_print_name_cmd, RB_NORM, NULL); if(i == 'x'){ - cmd_cancelled("Change"); + cmd_cancelled("修改"); break; } else if(i == 'c'){ @@ -9925,7 +9926,7 @@ parse_printer(lval[(*cl)->varmem], NULL, &p, NULL, NULL, NULL, &all_but_cmd); - strcpy(prompt, "Change command : "); + strcpy(prompt, "修改命令:"); strncpy(sval, p ? p : "", sizeof(sval)-1); sval[sizeof(sval)-1] = '\0'; fs_give((void **)&p); @@ -9962,12 +9963,12 @@ * Don't allow input of multiple entries at once. */ q_status_message(SM_ORDER,3,5, - "No commas allowed in command"); + "命令中不可有逗號"); continue; } } else if(i == 1){ - cmd_cancelled("Change"); + cmd_cancelled("修改"); } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; @@ -9986,7 +9987,7 @@ parse_printer(lval[(*cl)->varmem], &p, NULL, NULL, NULL, &all_but_nick, NULL); - strcpy(prompt, "Change name : "); + strcpy(prompt, "修改名稱:"); strncpy(name, p ? p : "", MAXPATH); fs_give((void **)&p); @@ -10014,7 +10015,7 @@ newval = &(*cl)->value; } else if(i == 1){ - cmd_cancelled("Change"); + cmd_cancelled("修改"); } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; @@ -10035,18 +10036,18 @@ ekey[0].ch = 'i'; ekey[0].rval = 'i'; ekey[0].name = "I"; - ekey[0].label = "Init"; + ekey[0].label = "起始"; ekey[1].ch = 't'; ekey[1].rval = 't'; ekey[1].name = "T"; - ekey[1].label = "Trailer"; + ekey[1].label = "結尾"; ekey[2].ch = -1; - strcpy(prompt, "Change Init string or Trailer string ? "); + strcpy(prompt, "修改「起始」或「結尾」字串?"); j = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'i', 'x', h_config_print_opt_choice, RB_NORM, NULL); if(j == 'x'){ - cmd_cancelled("Change"); + cmd_cancelled("修改"); break; } else{ @@ -10055,8 +10056,8 @@ parse_printer(lval[(*cl)->varmem], &nick, &p, &init, &trailer, NULL, NULL); - sprintf(prompt, "Change %s string : ", - (j == 'i') ? "INIT" : "TRAILER"); + sprintf(prompt, "修改%s字串:", + (j == 'i') ? "初始" : "結束"); strncpy(sval, (j == 'i') ? init : trailer, sizeof(sval)-1); sval[sizeof(sval)-1] = '\0'; @@ -10110,7 +10111,7 @@ newval = &(*cl)->value; } else if(i == 1){ - cmd_cancelled("Change"); + cmd_cancelled("修改"); } else if(i == 3){ help=(help == NO_HELP)?h_config_print_init:NO_HELP; @@ -11021,7 +11022,7 @@ if(comments && (fixed || !uvalset || (norm_with_except && except_set))){ if(fixed || !uvalset) - sstrncpy(&p, ": using ", avail_width-(p-tmp)); + sstrncpy(&p, ":目前使用 ", avail_width-(p-tmp)); if(norm_with_except && except_set){ if(!uvalset) @@ -11318,7 +11319,7 @@ if(curval && (fixed || !uvalset || (norm_with_except && except_set))){ if(fixed || !uvalset) - sstrcpy(&p, ": using "); + sstrcpy(&p, ":目前使用 "); if(norm_with_except && except_set){ if(!uvalset) @@ -11852,7 +11853,7 @@ p = (struncmp(*vp, "no-", 3)) ? *vp : *vp + 3; if(!strucmp(p, f->name) || (og && !strucmp(p, "old-growth"))){ q_status_message(SM_ORDER, 3, 3, - "Can't change value fixed by sys-admin."); + "無法修改系統管理員定義的設定值。"); return; } } @@ -11950,7 +11951,7 @@ case F_ENABLE_INCOMING : q_status_message(SM_ORDER | SM_DING, 3, 4, - "Folder List changes will take effect your next pine session."); + "資料匣列表的改變將在下次啟動 pine 時生效。"); break; @@ -12160,8 +12161,8 @@ || ((lval=v->fixed_val.l) && lval[0] && strcmp(INHERIT, lval[0]) != 0))){ q_status_message2(SM_ORDER, 3, 3, - "Can't %.200s sys-admin defined %.200s.", - action ? action : "change", name ? name : "value"); + "無法%.200s系統管理員定義的 %.200s.", + action ? action : "修改", name ? name : "設定值"); return(1); } @@ -12181,7 +12182,7 @@ (v->is_list && (lval=LVAL(v, ps_global->ew_for_except_vars)) && lval[0] && strcmp(INHERIT, lval[0]) != 0)) q_status_message1(SM_ORDER, 3, 3, - "Warning: \"%.200s\" is overridden in your exceptions configuration", + "告:\"%.200s\" 已蓋\過您的例外設定", v->name); } } @@ -12607,7 +12608,7 @@ && !(var->main_user_val.l || var->post_user_val.l) && var->current_val.l))) - q_status_message(SM_ORDER,0,3,"Using default value"); + q_status_message(SM_ORDER,0,3,"使用預設值"); if(var == &ps->vars[V_USER_DOMAIN]){ char *p, *q; @@ -12618,7 +12619,7 @@ if(*(++p)){ if(!revert) q_status_message2(SM_ORDER, 3, 5, - "User-domain (%.200s) cannot contain \"@\"; using %.200s", + "User-domain (%.200s) 不可包括 \"@\";使用 %.200s", ps->VAR_USER_DOMAIN, p); q = ps->VAR_USER_DOMAIN; while((*q++ = *p++) != '\0') @@ -12627,7 +12628,7 @@ else{ if(!revert) q_status_message1(SM_ORDER, 3, 5, - "User-domain (%.200s) cannot contain \"@\"; deleting", + "User-domain (%.200s) 不可包括 \"@\";刪除中", ps->VAR_USER_DOMAIN); if(ps->vars[V_USER_DOMAIN].post_user_val.p){ @@ -12718,7 +12719,7 @@ else if(var == &ps->vars[V_INIT_CMD_LIST]){ if(!revert) q_status_message(SM_ASYNC, 0, 3, - "Initial command changes will affect your next pine session."); + "初始命令的改變將在下次啟動 pine 時生效。"); } else if(var == &ps->vars[V_VIEW_HEADERS]){ ps->view_all_except = 0; @@ -12910,10 +12911,10 @@ } else if(timeo == 0 && !revert){ q_status_message(SM_ORDER, 4, 6, -"Warning: automatic new mail checking and mailbox checkpointing is disabled"); +"警告:已解除自動檢查新郵件與信箱檢查點"); if(ps->VAR_INBOX_PATH && ps->VAR_INBOX_PATH[0] == '{') q_status_message(SM_ASYNC, 3, 6, -"Warning: Mail-Check-Interval=0 may cause IMAP server connection to time out"); +"警告:mail-check-interval=0 可能導致 IMAP 伺服器連線作業逾時"); } } else if(var == &ps->vars[V_MAILCHECKNONCURR]){ @@ -13098,7 +13099,7 @@ score = atoi(var->current_val.p); if(score < SCORE_MIN || score > SCORE_MAX){ q_status_message2(SM_ORDER, 3, 5, - "Score Value must be in range %.200s to %.200s", + "評分值必須在 %.200s 到 %.200s 之間", comatose(SCORE_MIN), comatose(SCORE_MAX)); apval = APVAL(var, ew); if(*apval) @@ -13154,7 +13155,7 @@ var == &ps->vars[V_RSHOPENTIMEO] || var == &ps->vars[V_SSHOPENTIMEO])) q_status_message(SM_ASYNC, 0, 3, - "Timeout changes will affect your next pine session."); + "逾時之改變將於下次啟動 pine 時生效。"); } @@ -13737,10 +13738,10 @@ static struct key role_select_keys[] = {HELP_MENU, NULL_MENU, - {"E", "Exit", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, NULL_MENU, - {"P", "PrevRole", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, - {"N", "NextRole", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, + {"P", "前一身份", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, + {"N", "次一身份", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, NULL_MENU, @@ -13773,7 +13774,7 @@ if(!(nonempty_patterns(rflags, &pstate) && first_pattern(&pstate))){ q_status_message(SM_ORDER, 0, 3, - "No roles available. Use Setup/Rules to add roles."); + "沒有身份。使用「環境設定」中的「規則」新增身份。"); return(ret); } @@ -13790,18 +13791,18 @@ menu_add_binding(&role_select_km, ctrl('M'), MC_CHOICE); } else{ - menu_init_binding(&role_select_km, 'S', MC_CHOICE, "S", "[Select]", + menu_init_binding(&role_select_km, 'S', MC_CHOICE, "S", "[選擇]", DEFAULT_KEY); menu_add_binding(&role_select_km, ctrl('J'), MC_CHOICE); menu_add_binding(&role_select_km, ctrl('M'), MC_CHOICE); } if(alt_compose){ - helptitle = "HELP FOR SELECTING A ROLE TO COMPOSE AS"; + helptitle = "選擇以某一角色編輯的輔助說明"; help = h_role_select; } else{ - helptitle = "HELP FOR SELECTING A ROLE NICKNAME"; + helptitle = "選擇一角色暱稱的輔助說明"; help = h_role_nick_select; } @@ -13825,7 +13826,7 @@ } memset(&screen, 0, sizeof(screen)); - (void)conf_scroll_screen(ps, &screen, first_line, "SELECT ROLE", + (void)conf_scroll_screen(ps, &screen, first_line, "選擇身份", "roles ", 0); if(sel_pat){ @@ -13927,7 +13928,7 @@ PerAddrBook *pab; char *abook = NULL; - helptitle = "HELP FOR SELECTING AN ADDRESS BOOK"; + helptitle = "選擇一地址簿的輔助說明"; help = h_role_abook_select; init_ab_if_needed(); @@ -14042,8 +14043,8 @@ uh_oh: first_line = NULL; - sprintf(title, "SETUP%s ", edit_exceptions ? " EXCEPTIONAL" : ""); - role_type_print(title+strlen(title), "%sRULES", rflags); + sprintf(title, "設定%s ", edit_exceptions ? " 例外" : ""); + role_type_print(title+strlen(title), "%s規則", rflags); role_global_flags = rflags; role_global_pstate = &pstate; role_config_init_disp(ps, &first_line, rflags, &pstate); @@ -14165,7 +14166,7 @@ if(!env){ q_status_message(SM_ORDER, 3, 7, - "problem getting addresses from message"); + "自信件中取得地址時發生問題"); return; } } @@ -14207,7 +14208,7 @@ } if(!any_patterns(rflags, &pstate)){ - q_status_message(SM_ORDER, 3, 7, "problem accessing rules"); + q_status_message(SM_ORDER, 3, 7, "存取規則時發生問題"); return; } @@ -14336,7 +14337,7 @@ pat = next_pattern(&pstate)){ if(pat->patgrp && pat->patgrp->nick && !strucmp(pat->patgrp->nick, newpat->patgrp->nick)){ - q_status_message(SM_ORDER|SM_DING, 3, 7, "Warning: The nickname of the new role is already in use."); + q_status_message(SM_ORDER|SM_DING, 3, 7, "警告:新身份的暱稱已經在使用當中。"); break; } } @@ -14473,23 +14474,23 @@ static struct key role_config_keys[] = {HELP_MENU, OTHER_MENU, - {"E", "Exit Setup", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, - {"P", "PrevRule", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, - {"N", "NextRule", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"P", "前一規則", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, + {"N", "次一規則", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add", {MC_ADD,1,{'a'}}, KS_NONE}, - {"D", "Delete", {MC_DELETE,1,{'d'}}, KS_NONE}, - {"$", "Shuffle", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, + {"A", "新增", {MC_ADD,1,{'a'}}, KS_NONE}, + {"D", "刪除", {MC_DELETE,1,{'d'}}, KS_NONE}, + {"$", "重新整理", {MC_SHUFFLE,1,{'$'}}, KS_NONE}, WHEREIS_MENU, HELP_MENU, OTHER_MENU, NULL_MENU, NULL_MENU, - {"I", "IncludeFile", {MC_ADDFILE,1,{'i'}}, KS_NONE}, - {"X", "eXcludeFile", {MC_DELFILE,1,{'x'}}, KS_NONE}, + {"I", "含括檔案", {MC_ADDFILE,1,{'i'}}, KS_NONE}, + {"X", "排除檔案", {MC_DELFILE,1,{'x'}}, KS_NONE}, NULL_MENU, NULL_MENU, {"R", "Replicate", {MC_COPY,1,{'r'}}, KS_NONE}, @@ -14808,7 +14809,7 @@ case MC_DELETE : if(first_one) q_status_message(SM_ORDER|SM_DING, 0, 3, - "Nothing to Delete, use Add"); + "沒有可供刪除的項目,請用新增"); else rv = role_config_del(ps, cl, role_global_flags); @@ -14829,14 +14830,14 @@ case MC_SHUFFLE : if(first_one) q_status_message(SM_ORDER|SM_DING, 0, 3, - "Nothing to Shuffle, use Add"); + "沒有可供重整的項目,請用新增"); else rv = role_config_shuffle(ps, cl); break; case MC_EXIT : - role_type_print(exitpmt, "%sRule Setup", role_global_flags); + role_type_print(exitpmt, "%s規則設定", role_global_flags); rv = screen_exit_cmd(flags, exitpmt); break; @@ -14887,7 +14888,7 @@ if((*cl)->d.r.patline && (*cl)->d.r.patline->readonly && (*cl)->d.r.patline->type == File){ - q_status_message(SM_ORDER, 0, 3, "Can't add rule to ReadOnly file"); + q_status_message(SM_ORDER, 0, 3, "無法將規則新增至唯讀檔"); return(rv); } @@ -14912,7 +14913,7 @@ pat = next_pattern(&pstate)){ if(pat->patgrp && pat->patgrp->nick && !strucmp(pat->patgrp->nick, new_pat->patgrp->nick)){ - q_status_message(SM_ORDER|SM_DING, 3, 7, "Warning: The nickname of the new role is already in use."); + q_status_message(SM_ORDER|SM_DING, 3, 7, "警告:新身份的暱稱已經在使用當中。"); break; } } @@ -15069,7 +15070,7 @@ pat = next_pattern(&pstate)){ if(pat->patgrp && pat->patgrp->nick && !strucmp(pat->patgrp->nick, new_pat->patgrp->nick)){ - q_status_message(SM_ORDER|SM_DING, 3, 7, "Warning: The nickname of the new role is already in use."); + q_status_message(SM_ORDER|SM_DING, 3, 7, "警告:新身份的暱稱已經在使用當中。"); break; } } @@ -15175,7 +15176,7 @@ char title[80]; if((*cl)->d.r.patline->readonly){ - q_status_message(SM_ORDER, 0, 3, "Can't change ReadOnly rule"); + q_status_message(SM_ORDER, 0, 3, "無法將規則新增至唯讀檔"); return(rv); } @@ -15270,7 +15271,7 @@ char prompt[100]; if((*cl)->d.r.patline->readonly){ - q_status_message(SM_ORDER, 0, 3, "Can't delete ReadOnly rule"); + q_status_message(SM_ORDER, 0, 3, "無法刪除唯讀規則"); return(rv); } @@ -15283,7 +15284,7 @@ delete_a_role(cl, rflags); } else - q_status_message(SM_ORDER, 0, 3, "Rule not deleted"); + q_status_message(SM_ORDER, 0, 3, "規則未被刪除"); return(rv); } @@ -15404,7 +15405,7 @@ if(!((*cl)->prev || (*cl)->next)){ q_status_message(SM_ORDER, 0, 3, - "Shuffle only makes sense when there is more than one rule defined"); + "僅在多個規則被定義時重整才有意義"); return(rv); } @@ -15413,22 +15414,22 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; - opts[i++].label = "Up"; + opts[i++].label = "上"; opts[i].ch = 'd'; opts[i].rval = 'd'; opts[i].name = "D"; - opts[i++].label = "Down"; + opts[i++].label = "下"; opts[i].ch = 'b'; opts[i].rval = 'b'; opts[i].name = "B"; - opts[i++].label = "Before File"; + opts[i++].label = "檔案之前"; opts[i].ch = 'a'; opts[i].rval = 'a'; opts[i].name = "A"; - opts[i++].label = "After File"; + opts[i++].label = "檔案之後"; opts[i].ch = -1; deefault = 'u'; @@ -15509,7 +15510,7 @@ help, RB_NORM, NULL); if(rv == 'x'){ - cmd_cancelled("Shuffle"); + cmd_cancelled("重整"); return(0); } @@ -15671,7 +15672,7 @@ continue; } else if(r == 1 || (r == 0 && filename[0] == '\0')){ - cmd_cancelled("IncludeFile"); + cmd_cancelled("含括檔案"); return(rv); } else if(r == 4){ @@ -15794,7 +15795,7 @@ return(rv); } - sprintf(prompt, "Really remove rule file \"%.20s\" from rules config ", + sprintf(prompt, "真的自規則設定中刪除規則檔案 \"%.20s\"", cur_patline->filename); ps->mangled_footer = 1; @@ -16524,11 +16525,11 @@ **cat_cmd = NULL, **cstm_act = NULL, **smtp_act = NULL, **nntp_act = NULL, **spat; char tmp[MAXPATH+1], **apval, **lval, ***alval, *p; - char *fstr = " CURRENT FOLDER CONDITIONS BEGIN HERE "; + char *fstr = " 目前的信件匣狀況由此處開始 "; char mstr[50]; - char *astr = " ACTIONS BEGIN HERE "; + char *astr = " 動作由此處開始 "; char *ustr = " USES BEGIN HERE "; - char *ostr = " OPTIONS BEGIN HERE "; + char *ostr = " 選項由此處開始 "; SortOrder def_sort; int def_sort_rev; ARBHDR_S *aa, *a; @@ -16633,11 +16634,11 @@ char msg[MAX_SCREEN_COLS+1]; sprintf(msg, - "Rule contains unknown %s element, possibly from newer Pine", - (def->patgrp && def->patgrp->bogus) ? "pattern" : "action"); + "規則中包含了未知的%s,可能是來自於新版的 Pine", + (def->patgrp && def->patgrp->bogus) ? "式樣" : "動作"); q_status_message(SM_ORDER | SM_DING, 7, 7, msg); q_status_message(SM_ORDER | SM_DING, 7, 7, - "Editing with this version of Pine will destroy information"); + "以此版本的 Pine 編輯將會破壞資訊"); flush_status_messages(0); } @@ -16650,7 +16651,7 @@ role_afrom_ptr = startup_ptr = NULL; role_comment_ptr = NULL; - nick_var.name = cpystr("Nickname"); + nick_var.name = cpystr("暱稱"); nick_var.is_used = 1; nick_var.is_user = 1; apval = APVAL(&nick_var, ew); @@ -16658,18 +16659,18 @@ ? cpystr(def->patgrp->nick) : NULL; nick_var.global_val.p = cpystr(edit_role - ? "Alternate Role" + ? "替代身份" : (edit_other - ? "Other Rule" + ? "其他規則" : (edit_incol - ? "Index Color Rule" + ? "索引色彩規則" : (edit_score - ? "Score Rule" - : "Filter Rule")))); + ? "評分規則" + : "過濾器規則")))); set_current_val(&nick_var, FALSE, FALSE); role_comment_ptr = &comment_var; /* so radiobuttons can tell */ - comment_var.name = cpystr("Comment"); + comment_var.name = cpystr("註釋"); comment_var.is_used = 1; comment_var.is_user = 1; apval = APVAL(&comment_var, ew); @@ -16677,34 +16678,34 @@ ? cpystr(def->patgrp->comment) : NULL; set_current_val(&comment_var, FALSE, FALSE); - setup_dummy_pattern_var(&to_pat_var, "To pattern", + setup_dummy_pattern_var(&to_pat_var, "目的式樣", (def && def->patgrp) ? def->patgrp->to : NULL); - setup_dummy_pattern_var(&from_pat_var, "From pattern", + setup_dummy_pattern_var(&from_pat_var, "來源式樣", (def && def->patgrp) ? def->patgrp->from : NULL); - setup_dummy_pattern_var(&sender_pat_var, "Sender pattern", + setup_dummy_pattern_var(&sender_pat_var, "寄件者式樣", (def && def->patgrp) ? def->patgrp->sender : NULL); - setup_dummy_pattern_var(&cc_pat_var, "Cc pattern", + setup_dummy_pattern_var(&cc_pat_var, "副本式樣", (def && def->patgrp) ? def->patgrp->cc : NULL); - setup_dummy_pattern_var(&news_pat_var, "News pattern", + setup_dummy_pattern_var(&news_pat_var, "新聞式樣", (def && def->patgrp) ? def->patgrp->news : NULL); - setup_dummy_pattern_var(&subj_pat_var, "Subject pattern", + setup_dummy_pattern_var(&subj_pat_var, "主題式樣", (def && def->patgrp) ? def->patgrp->subj : NULL); - setup_dummy_pattern_var(&recip_pat_var, "Recip pattern", + setup_dummy_pattern_var(&recip_pat_var, "領受者式樣", (def && def->patgrp) ? def->patgrp->recip : NULL); - setup_dummy_pattern_var(&partic_pat_var, "Partic pattern", + setup_dummy_pattern_var(&partic_pat_var, "關係者式樣", (def && def->patgrp) ? def->patgrp->partic : NULL); - setup_dummy_pattern_var(&alltext_pat_var, "AllText pattern", + setup_dummy_pattern_var(&alltext_pat_var, "所有文字式樣", (def && def->patgrp) ? def->patgrp->alltext : NULL); - setup_dummy_pattern_var(&bodytext_pat_var, "BdyText pattern", + setup_dummy_pattern_var(&bodytext_pat_var, "本體文字式樣", (def && def->patgrp) ? def->patgrp->bodytext : NULL); - setup_dummy_pattern_var(&keyword_pat_var, "Keyword pattern", + setup_dummy_pattern_var(&keyword_pat_var, "關鍵字式樣", (def && def->patgrp) ? def->patgrp->keyword : NULL); - setup_dummy_pattern_var(&charset_pat_var, "Charset pattern", + setup_dummy_pattern_var(&charset_pat_var, "字元集式樣", (def && def->patgrp) ? def->patgrp->charsets : NULL); age_pat_global_ptr = &age_pat_var; - age_pat_var.name = cpystr("Age interval"); + age_pat_var.name = cpystr("年齡區間"); age_pat_var.is_used = 1; age_pat_var.is_user = 1; if(def && def->patgrp && def->patgrp->do_age){ @@ -16715,7 +16716,7 @@ set_current_val(&age_pat_var, FALSE, FALSE); size_pat_global_ptr = &size_pat_var; - size_pat_var.name = cpystr("Size interval"); + size_pat_var.name = cpystr("大小區間"); size_pat_var.is_used = 1; size_pat_var.is_user = 1; if(def && def->patgrp && def->patgrp->do_size){ @@ -16726,7 +16727,7 @@ set_current_val(&size_pat_var, FALSE, FALSE); scorei_pat_global_ptr = &scorei_pat_var; - scorei_pat_var.name = cpystr("Score interval"); + scorei_pat_var.name = cpystr("得分區間"); scorei_pat_var.is_used = 1; scorei_pat_var.is_user = 1; if(def && def->patgrp && def->patgrp->do_score){ @@ -16744,7 +16745,7 @@ pindent += NOTLEN; role_status1_ptr = &stat_del_var; /* so radiobuttons can tell */ - stat_del_var.name = cpystr("Message is Deleted?"); + stat_del_var.name = cpystr("信件是被刪除的?"); stat_del_var.is_used = 1; stat_del_var.is_user = 1; apval = APVAL(&stat_del_var, ew); @@ -16752,7 +16753,7 @@ set_current_val(&stat_del_var, FALSE, FALSE); role_status2_ptr = &stat_new_var; /* so radiobuttons can tell */ - stat_new_var.name = cpystr("Message is New (Unseen)?"); + stat_new_var.name = cpystr("信件是新的(尚未被讀取過的)?"); stat_new_var.is_used = 1; stat_new_var.is_user = 1; apval = APVAL(&stat_new_var, ew); @@ -16760,7 +16761,7 @@ set_current_val(&stat_new_var, FALSE, FALSE); role_status3_ptr = &stat_imp_var; /* so radiobuttons can tell */ - stat_imp_var.name = cpystr("Message is Important?"); + stat_imp_var.name = cpystr("信件是重要的?"); stat_imp_var.is_used = 1; stat_imp_var.is_user = 1; apval = APVAL(&stat_imp_var, ew); @@ -16768,7 +16769,7 @@ set_current_val(&stat_imp_var, FALSE, FALSE); role_status4_ptr = &stat_ans_var; /* so radiobuttons can tell */ - stat_ans_var.name = cpystr("Message is Answered?"); + stat_ans_var.name = cpystr("信件是已回覆的?"); stat_ans_var.is_used = 1; stat_ans_var.is_user = 1; apval = APVAL(&stat_ans_var, ew); @@ -16776,7 +16777,7 @@ set_current_val(&stat_ans_var, FALSE, FALSE); role_status5_ptr = &stat_8bit_var; /* so radiobuttons can tell */ - stat_8bit_var.name = cpystr("Subject contains raw 8-bit?"); + stat_8bit_var.name = cpystr("主旨包含未經處理的 8-bit 資訊?"); stat_8bit_var.is_used = 1; stat_8bit_var.is_user = 1; apval = APVAL(&stat_8bit_var, ew); @@ -16784,7 +16785,7 @@ set_current_val(&stat_8bit_var, FALSE, FALSE); role_status6_ptr = &stat_rec_var; /* so radiobuttons can tell */ - stat_rec_var.name = cpystr("Message is Recent?"); + stat_rec_var.name = cpystr("信件是最近的?"); stat_rec_var.is_used = 1; stat_rec_var.is_user = 1; apval = APVAL(&stat_rec_var, ew); @@ -16811,7 +16812,7 @@ convert_statebits_to_vals((def && def->action) ? def->action->state_setting_bits : 0L, &dval, &aval, &ival, &nval); msg_state1_ptr = &filt_del_var; /* so radiobuttons can tell */ - filt_del_var.name = cpystr("Set Deleted Status"); + filt_del_var.name = cpystr("設定「刪除狀態」"); filt_del_var.is_used = 1; filt_del_var.is_user = 1; apval = APVAL(&filt_del_var, ew); @@ -16819,7 +16820,7 @@ set_current_val(&filt_del_var, FALSE, FALSE); msg_state2_ptr = &filt_new_var; /* so radiobuttons can tell */ - filt_new_var.name = cpystr("Set New Status"); + filt_new_var.name = cpystr("設定「新狀態」"); filt_new_var.is_used = 1; filt_new_var.is_user = 1; apval = APVAL(&filt_new_var, ew); @@ -16827,7 +16828,7 @@ set_current_val(&filt_new_var, FALSE, FALSE); msg_state3_ptr = &filt_imp_var; /* so radiobuttons can tell */ - filt_imp_var.name = cpystr("Set Important Status"); + filt_imp_var.name = cpystr("設定「重要狀態」"); filt_imp_var.is_used = 1; filt_imp_var.is_user = 1; apval = APVAL(&filt_imp_var, ew); @@ -16835,7 +16836,7 @@ set_current_val(&filt_imp_var, FALSE, FALSE); msg_state4_ptr = &filt_ans_var; /* so radiobuttons can tell */ - filt_ans_var.name = cpystr("Set Answered Status"); + filt_ans_var.name = cpystr("設定「回覆狀態」"); filt_ans_var.is_used = 1; filt_ans_var.is_user = 1; apval = APVAL(&filt_ans_var, ew); @@ -16845,7 +16846,7 @@ pindent += 3; - inick_var.name = cpystr("Initialize settings using role"); + inick_var.name = cpystr("使用身份初始化設定"); inick_var.is_used = 1; inick_var.is_user = 1; apval = APVAL(&inick_var, ew); @@ -16854,14 +16855,14 @@ ? cpystr(def->action->inherit_nick) : NULL; role_fldr_ptr = &fldr_type_var; /* so radiobuttons can tell */ - fldr_type_var.name = cpystr("Current Folder Type"); + fldr_type_var.name = cpystr("目前檔案匣形態"); fldr_type_var.is_used = 1; fldr_type_var.is_user = 1; apval = APVAL(&fldr_type_var, ew); *apval = (f=pat_fldr_types((def && def->patgrp) ? def->patgrp->fldr_type : (!def && edit_filter) ? FLDR_SPECIFIC : FLDR_DEFL)) ? cpystr(f->name) : NULL; set_current_val(&fldr_type_var, FALSE, FALSE); - setup_dummy_pattern_var(&folder_pat_var, "Folder List", + setup_dummy_pattern_var(&folder_pat_var, "檔案匣列表", (def && def->patgrp) ? def->patgrp->folder : NULL); /* special default for folder_pat */ alval = ALVAL(&folder_pat_var, ew); @@ -16876,14 +16877,14 @@ } role_afrom_ptr = &abook_type_var; /* so radiobuttons can tell */ - abook_type_var.name = cpystr("From or ReplyTo is in address book?"); + abook_type_var.name = cpystr("來源或回覆位址在地址簿中?"); abook_type_var.is_used = 1; abook_type_var.is_user = 1; apval = APVAL(&abook_type_var, ew); *apval = (f=abookfrom_fldr_types((def && def->patgrp) ? def->patgrp->abookfrom : AFRM_EITHER)) ? cpystr(f->name) : NULL; set_current_val(&abook_type_var, FALSE, FALSE); - setup_dummy_pattern_var(&abook_pat_var, "Abook List", + setup_dummy_pattern_var(&abook_pat_var, "地址簿列表", (def && def->patgrp) ? def->patgrp->abooks : NULL); /* @@ -16891,7 +16892,7 @@ * actually a char ** in the struct instead of a PATTERN_S. */ cat_cmd_global_ptr = &cat_cmd_var; - cat_cmd_var.name = cpystr("External Categorizer Commands"); + cat_cmd_var.name = cpystr("外部分類器命令"); cat_cmd_var.is_used = 1; cat_cmd_var.is_user = 1; cat_cmd_var.is_list = 1; @@ -16902,7 +16903,7 @@ set_current_val(&cat_cmd_var, FALSE, FALSE); cati_global_ptr = &cati_var; - cati_var.name = cpystr("Exit Status Interval"); + cati_var.name = cpystr("離開狀態的間隔"); cati_var.is_used = 1; cati_var.is_user = 1; if(def && def->patgrp && def->patgrp->do_cat && def->patgrp->category_cmd && @@ -16914,7 +16915,7 @@ set_current_val(&cati_var, FALSE, FALSE); cat_lim_global_ptr = &cat_lim_var; - cat_lim_var.name = cpystr("Character Limit"); + cat_lim_var.name = cpystr("字元限制"); cat_lim_var.is_used = 1; cat_lim_var.is_user = 1; cat_lim_var.global_val.p = cpystr("-1"); @@ -16927,7 +16928,7 @@ set_current_val(&cat_lim_var, FALSE, FALSE); - from_act_var.name = cpystr("Set From"); + from_act_var.name = cpystr("設定「來源」"); from_act_var.is_used = 1; from_act_var.is_user = 1; if(def && def->action && def->action->from){ @@ -16944,7 +16945,7 @@ *apval = NULL; } - replyto_act_var.name = cpystr("Set Reply-To"); + replyto_act_var.name = cpystr("設定「回覆至」"); replyto_act_var.is_used = 1; replyto_act_var.is_user = 1; if(def && def->action && def->action->replyto){ @@ -16961,14 +16962,14 @@ *apval = NULL; } - fcc_act_var.name = cpystr("Set Fcc"); + fcc_act_var.name = cpystr("設定「檔案副本」"); fcc_act_var.is_used = 1; fcc_act_var.is_user = 1; apval = APVAL(&fcc_act_var, ew); *apval = (def && def->action && def->action->fcc) ? cpystr(def->action->fcc) : NULL; - sort_act_var.name = cpystr("Set Sort Order"); + sort_act_var.name = cpystr("設定「排序順序」"); sort_act_var.is_used = 1; sort_act_var.is_user = 1; apval = APVAL(&sort_act_var, ew); @@ -16981,7 +16982,7 @@ else *apval = NULL; - iform_act_var.name = cpystr("Set Index Format"); + iform_act_var.name = cpystr("設定「索引格式」"); iform_act_var.is_used = 1; iform_act_var.is_user = 1; apval = APVAL(&iform_act_var, ew); @@ -16994,7 +16995,7 @@ } startup_ptr = &startup_var; - startup_var.name = cpystr("Set Startup Rule"); + startup_var.name = cpystr("設定「起始規則」"); startup_var.is_used = 1; startup_var.is_user = 1; apval = APVAL(&startup_var, ew); @@ -17009,28 +17010,28 @@ set_current_val(&startup_var, FALSE, FALSE); } - litsig_act_var.name = cpystr("Set LiteralSig"); + litsig_act_var.name = cpystr("設定「實體簽名」"); litsig_act_var.is_used = 1; litsig_act_var.is_user = 1; apval = APVAL(&litsig_act_var, ew); *apval = (def && def->action && def->action->litsig) ? cpystr(def->action->litsig) : NULL; - sig_act_var.name = cpystr("Set Signature"); + sig_act_var.name = cpystr("設定「簽名」"); sig_act_var.is_used = 1; sig_act_var.is_user = 1; apval = APVAL(&sig_act_var, ew); *apval = (def && def->action && def->action->sig) ? cpystr(def->action->sig) : NULL; - templ_act_var.name = cpystr("Set Template"); + templ_act_var.name = cpystr("設定「模版」"); templ_act_var.is_used = 1; templ_act_var.is_user = 1; apval = APVAL(&templ_act_var, ew); *apval = (def && def->action && def->action->template) ? cpystr(def->action->template) : NULL; - cstm_act_var.name = cpystr("Set Other Hdrs"); + cstm_act_var.name = cpystr("設定「其他表頭」"); cstm_act_var.is_used = 1; cstm_act_var.is_user = 1; cstm_act_var.is_list = 1; @@ -17038,7 +17039,7 @@ *alval = (def && def->action && def->action->cstm) ? copy_list_array(def->action->cstm) : NULL; - smtp_act_var.name = cpystr("Use SMTP Server"); + smtp_act_var.name = cpystr("使用 SMTP 伺服器"); smtp_act_var.is_used = 1; smtp_act_var.is_user = 1; smtp_act_var.is_list = 1; @@ -17055,7 +17056,7 @@ ? copy_list_array(def->action->nntp) : NULL; score_act_global_ptr = &score_act_var; - score_act_var.name = cpystr("Score Value"); + score_act_var.name = cpystr("評分值"); score_act_var.is_used = 1; score_act_var.is_user = 1; if(def && def->action && def->action->scoreval >= SCORE_MIN && @@ -17072,7 +17073,7 @@ set_current_val(&score_act_var, FALSE, FALSE); role_repl_ptr = &repl_type_var; /* so radiobuttons can tell */ - repl_type_var.name = cpystr("Reply Use"); + repl_type_var.name = cpystr("回覆使用"); repl_type_var.is_used = 1; repl_type_var.is_user = 1; apval = APVAL(&repl_type_var, ew); @@ -17080,14 +17081,14 @@ set_current_val(&repl_type_var, FALSE, FALSE); role_forw_ptr = &forw_type_var; /* so radiobuttons can tell */ - forw_type_var.name = cpystr("Forward Use"); + forw_type_var.name = cpystr("轉寄使用"); forw_type_var.is_used = 1; forw_type_var.is_user = 1; apval = APVAL(&forw_type_var, ew); *apval = (f=role_forw_types((def && def->action) ? def->action->forw_type : -1)) ? cpystr(f->name) : NULL; set_current_val(&forw_type_var, FALSE, FALSE); - comp_type_var.name = cpystr("Compose Use"); + comp_type_var.name = cpystr("編輯使用"); comp_type_var.is_used = 1; comp_type_var.is_user = 1; apval = APVAL(&comp_type_var, ew); @@ -17122,7 +17123,7 @@ /* Nickname */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR NICKNAME"; + ctmp->help_title= "暱稱的輔助說明"; ctmp->var = &nick_var; ctmp->valoffset = pindent; ctmp->keymenu = &config_role_keymenu; @@ -17213,7 +17214,7 @@ fval = -1; for(i = 0; f = pat_fldr_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR CURRENT FOLDER TYPE"; + ctmp->help_title= "目前信件匣形態的輔助說明"; ctmp->var = &fldr_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -17244,7 +17245,7 @@ edit_score ? h_config_score_fldr_type : edit_other ? h_config_other_fldr_type : h_config_filt_fldr_type, - "HELP FOR FOLDER LIST", + "信件匣列表的輔助說明", &config_role_patfolder_keymenu, t_tool, 12+5, !(fval == FLDR_SPECIFIC)); @@ -17256,11 +17257,11 @@ new_confline(&ctmp); ctmp->flags |= CF_NOSELECT; ctmp->value = cpystr(repeat_char(ps->ttyo->screen_cols, '=')); - sprintf(mstr, " %.10s MESSAGE CONDITIONS BEGIN HERE ", - edit_role ? "CURRENT" : - edit_score ? "SCORED" : - edit_incol ? "COLORED" : - edit_filter ? "FILTERED" : "CURRENT"); + sprintf(mstr, " %.10s的信件狀態由此開始 ", + edit_role ? "目前" : + edit_score ? "已評分" : + edit_incol ? "已標色" : + edit_filter ? "已過濾" : "目前"); if(ps->ttyo->screen_cols >= strlen(mstr) + 2) strncpy(ctmp->value + (ps->ttyo->screen_cols - strlen(mstr))/2, mstr, strlen(mstr)); @@ -17275,35 +17276,35 @@ edit_score ? h_config_score_topat : edit_other ? h_config_other_topat : h_config_filt_topat, - "HELP FOR TO PATTERN", + "式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &from_pat_var, h_config_role_frompat, - "HELP FOR FROM PATTERN", + "來源式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &sender_pat_var, h_config_role_senderpat, - "HELP FOR SENDER PATTERN", + "寄件者式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &cc_pat_var, h_config_role_ccpat, - "HELP FOR CC PATTERN", + "副本式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &news_pat_var, h_config_role_newspat, - "HELP FOR NEWS PATTERN", + "新聞式樣的輔助說明", &config_role_keymenu_not, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &subj_pat_var, h_config_role_subjpat, - "HELP FOR SUBJECT PATTERN", + "主旨式樣的輔助說明", &config_role_keymenu_not, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &recip_pat_var, h_config_role_recippat, - "HELP FOR RECIPIENT PATTERN", + "領受者式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &partic_pat_var, h_config_role_particpat, - "HELP FOR PARTICIPANT PATTERN", + "關係者式樣的輔助說明", &config_role_addr_pat_keymenu, t_tool, &earb, pindent); /* Arbitrary Patterns */ @@ -17340,7 +17341,7 @@ } new_confline(&ctmp); - ctmp->help_title = "HELP FOR EXTRA HEADERS"; + ctmp->help_title = "額外表頭的輔助說明"; ctmp->value = cpystr(ADDXHDRS); ctmp->keymenu = &config_role_keymenu_extra; ctmp->help = h_config_role_arbpat; @@ -17349,16 +17350,16 @@ ctmp->varmem = -1; setup_role_pat(ps, &ctmp, &alltext_pat_var, h_config_role_alltextpat, - "HELP FOR ALL TEXT PATTERN", + "所有文字式樣的輔助說明", &config_role_keymenu_not, t_tool, &earb, pindent); setup_role_pat(ps, &ctmp, &bodytext_pat_var, h_config_role_bodytextpat, - "HELP FOR BODY TEXT PATTERN", + "本體文字式樣的輔助說明", &config_role_keymenu_not, t_tool, &earb, pindent); /* Age Interval */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR AGE INTERVAL"; + ctmp->help_title= "年齡區間的輔助說明"; ctmp->var = &age_pat_var; ctmp->valoffset = pindent; ctmp->keymenu = &config_text_keymenu; @@ -17371,7 +17372,7 @@ /* Size Interval */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SIZE INTERVAL"; + ctmp->help_title= "大小區間的輔助說明"; ctmp->var = &size_pat_var; ctmp->valoffset = pindent; ctmp->keymenu = &config_text_keymenu; @@ -17385,7 +17386,7 @@ if(!edit_score){ /* Score Interval */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SCORE INTERVAL"; + ctmp->help_title= "評分區間的輔助說明"; ctmp->var = &scorei_pat_var; ctmp->valoffset = pindent; ctmp->keymenu = &config_text_keymenu; @@ -17399,40 +17400,40 @@ /* Keyword Pattern */ setup_role_pat(ps, &ctmp, &keyword_pat_var, h_config_role_keywordpat, - "HELP FOR KEYWORD PATTERN", + "關鍵字樣式的輔助說明", &config_role_keyword_keymenu_not, role_text_tool_kword, NULL, pindent); /* Charset Pattern */ setup_role_pat(ps, &ctmp, &charset_pat_var, h_config_role_charsetpat, - "HELP FOR CHARACTER SET PATTERN", + "字元集樣式的輔助說明", &config_role_charset_keymenu_not, role_text_tool_charset, NULL, pindent); /* Important Status */ SETUP_PAT_STATUS(ctmp, stat_imp_var, def->patgrp->stat_imp, - "HELP FOR IMPORTANT STATUS", h_config_role_stat_imp); + "重要狀態的輔助說明", h_config_role_stat_imp); /* New Status */ SETUP_PAT_STATUS(ctmp, stat_new_var, def->patgrp->stat_new, - "HELP FOR NEW STATUS", h_config_role_stat_new); + "新狀態的輔助說明", h_config_role_stat_new); /* Recent Status */ SETUP_PAT_STATUS(ctmp, stat_rec_var, def->patgrp->stat_rec, - "HELP FOR RECENT STATUS", h_config_role_stat_recent); + "新進狀態的輔助說明", h_config_role_stat_recent); /* Deleted Status */ SETUP_PAT_STATUS(ctmp, stat_del_var, def->patgrp->stat_del, - "HELP FOR DELETED STATUS", h_config_role_stat_del); + "已刪除狀態的輔助說明", h_config_role_stat_del); /* Answered Status */ SETUP_PAT_STATUS(ctmp, stat_ans_var, def->patgrp->stat_ans, - "HELP FOR ANSWERED STATUS", h_config_role_stat_ans); + "已回覆狀態的輔助說明", h_config_role_stat_ans); /* 8-bit Subject */ SETUP_PAT_STATUS(ctmp, stat_8bit_var, def->patgrp->stat_8bitsubj, - "HELP FOR 8-BIT SUBJECT", h_config_role_stat_8bitsubj); + "8-BIT 主旨的輔助說明", h_config_role_stat_8bitsubj); /* Beginning of month */ SETUP_PAT_STATUS(ctmp, stat_bom_var, def->patgrp->stat_bom, - "HELP FOR BEGINNING OF MONTH", h_config_role_bom); + "月起始的輔助說明", h_config_role_bom); /* Beginning of year */ SETUP_PAT_STATUS(ctmp, stat_boy_var, def->patgrp->stat_boy, - "HELP FOR BEGINNING OF YEAR", h_config_role_boy); + "年起始的輔助說明", h_config_role_boy); /* Blank line */ new_confline(&ctmp); @@ -17480,7 +17481,7 @@ fval = -1; for(i = 0; f = abookfrom_fldr_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR FROM IN ADDRESS BOOK"; + ctmp->help_title= "地址簿中「來源」的輔助說明"; ctmp->var = &abook_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -17502,7 +17503,7 @@ /* Specific list of abooks */ setup_role_pat_alt(ps, &ctmp, &abook_pat_var, h_config_role_abookfrom, - "HELP FOR ABOOK LIST", + "地址簿列表的輔助說明", &config_role_afrom_keymenu, role_text_tool_afrom, 12+5, !(fval == AFRM_SPEC_YES || fval == AFRM_SPEC_NO)); @@ -17526,7 +17527,7 @@ /* Commands */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR CATEGORIZER COMMAND"; + ctmp->help_title= "分類器命令的輔助說明"; ctmp->var = &cat_cmd_var; ctmp->varoffset = 4; ctmp->valoffset = i; @@ -17558,7 +17559,7 @@ /* Exit status interval */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR CATEGORIZER EXIT STATUS"; + ctmp->help_title= "分類器結束狀態的輔助說明"; ctmp->var = &cati_var; ctmp->varoffset = 4; ctmp->valoffset = i; @@ -17572,7 +17573,7 @@ /* Character Limit */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR CHARACTER LIMIT"; + ctmp->help_title= "字元限制的輔助說明"; ctmp->var = &cat_lim_var; ctmp->varoffset = 4; ctmp->valoffset = i; @@ -17607,7 +17608,7 @@ /* Inherit Nickname */ new_confline(&ctmp); inick_confs[INICK_INICK_CONF] = ctmp; - ctmp->help_title= "HELP FOR INITIAL SET NICKNAME"; + ctmp->help_title= "初始設定暱稱的輔助說明"; ctmp->var = &inick_var; ctmp->valoffset = 33; ctmp->keymenu = &config_role_inick_keymenu; @@ -17620,7 +17621,7 @@ /* From Action */ new_confline(&ctmp); inick_confs[INICK_FROM_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET FROM ACTION"; + ctmp->help_title= "設定來源動作的輔助說明"; ctmp->var = &from_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_role_addr_act_keymenu; @@ -17633,7 +17634,7 @@ /* Reply-To Action */ new_confline(&ctmp); inick_confs[INICK_REPLYTO_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET REPLY-TO ACTION"; + ctmp->help_title= "設定「回覆至」動作的輔助說明"; ctmp->var = &replyto_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_role_addr_act_keymenu; @@ -17646,7 +17647,7 @@ /* Fcc Action */ new_confline(&ctmp); inick_confs[INICK_FCC_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET FCC ACTION"; + ctmp->help_title= "設定「檔案副本」動作的輔助說明"; ctmp->var = &fcc_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_role_actionfolder_keymenu; @@ -17659,7 +17660,7 @@ /* LitSig Action */ new_confline(&ctmp); inick_confs[INICK_LITSIG_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET LITERAL SIGNATURE ACTION"; + ctmp->help_title= "設定「實體簽名」動作的輔助說明"; ctmp->var = &litsig_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_keymenu; @@ -17672,7 +17673,7 @@ /* Sig Action */ new_confline(&ctmp); inick_confs[INICK_SIG_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET SIGNATURE ACTION"; + ctmp->help_title= "設定「簽名」動作的輔助說明"; ctmp->var = &sig_act_var; ctmp->valoffset = indent; if(F_ON(F_DISABLE_ROLES_SIGEDIT, ps_global)) @@ -17689,7 +17690,7 @@ /* Template Action */ new_confline(&ctmp); inick_confs[INICK_TEMPL_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET TEMPLATE ACTION"; + ctmp->help_title= "設定「模版」動作的輔助說明"; ctmp->var = &templ_act_var; ctmp->valoffset = indent; if(F_ON(F_DISABLE_ROLES_TEMPLEDIT, ps_global)) @@ -17706,7 +17707,7 @@ /* Other Headers Action */ new_confline(&ctmp); inick_confs[INICK_CSTM_CONF] = ctmp; - ctmp->help_title= "HELP FOR SET OTHER HEADERS ACTION"; + ctmp->help_title= "設定「其他標頭」動作的輔助說明"; ctmp->var = &cstm_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_wshuf_keymenu; @@ -17737,7 +17738,7 @@ /* SMTP Server Action */ new_confline(&ctmp); inick_confs[INICK_SMTP_CONF] = ctmp; - ctmp->help_title= "HELP FOR SMTP SERVER ACTION"; + ctmp->help_title= "郵件伺服器動作的輔助說明"; ctmp->var = &smtp_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_wshuf_keymenu; @@ -17768,7 +17769,7 @@ /* NNTP Server Action */ new_confline(&ctmp); inick_confs[INICK_NNTP_CONF] = ctmp; - ctmp->help_title= "HELP FOR NNTP SERVER ACTION"; + ctmp->help_title= "新聞組群伺服器動作的輔助說明"; ctmp->var = &nntp_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_wshuf_keymenu; @@ -17808,7 +17809,7 @@ /* Score Value -- This doesn't inherit from inick */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SCORE VALUE ACTION"; + ctmp->help_title= "評分值動作的輔助說明"; ctmp->var = &score_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_keymenu; @@ -17896,7 +17897,7 @@ for(i = 0; f = filter_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR FILTER ACTION"; + ctmp->help_title= "過濾器動作的輔助說明"; ctmp->var = &filter_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -17915,18 +17916,18 @@ ? def->action->folder : NULL); setup_role_pat_alt(ps, &ctmp, &folder_act_var, h_config_filter_folder, - "HELP FOR FILTER FOLDER NAME", + "過濾器匣名稱的輔助說明", &config_role_actionfolder_keymenu, t_tool, 12+5, !(fval == FILTER_FOLDER)); SETUP_MSG_STATE(ctmp, filt_imp_var, ival, - "HELP FOR SET IMPORTANT STATUS", h_config_filt_stat_imp); + "設定重要狀態的輔助說明", h_config_filt_stat_imp); SETUP_MSG_STATE(ctmp, filt_new_var, nval, - "HELP FOR SET NEW STATUS", h_config_filt_stat_new); + "設定新狀態的輔助說明", h_config_filt_stat_new); SETUP_MSG_STATE(ctmp, filt_del_var, dval, - "HELP FOR SET DELETED STATUS", h_config_filt_stat_del); + "設定已刪除狀態的輔助說明", h_config_filt_stat_del); SETUP_MSG_STATE(ctmp, filt_ans_var, aval, - "HELP FOR SET ANSWERED STATUS", h_config_filt_stat_ans); + "設定已回覆狀態的輔助說明", h_config_filt_stat_ans); /* Blank line */ new_confline(&ctmp); @@ -17937,7 +17938,7 @@ (def && def->action) ? def->action->keyword_set : NULL); setup_role_pat(ps, &ctmp, &keyword_set_var, h_config_filter_kw_set, - "HELP FOR KEYWORDS TO BE SET", + "設定關鍵字的輔助說明", &config_role_keyword_keymenu, role_text_tool_kword, NULL, 23); @@ -17946,7 +17947,7 @@ (def && def->action) ? def->action->keyword_clr : NULL); setup_role_pat(ps, &ctmp, &keyword_clr_var, h_config_filter_kw_clr, - "HELP FOR KEYWORDS TO BE CLEARED", + "清除關鍵字的輔助說明", &config_role_keyword_keymenu, role_text_tool_kword, NULL, 23); } @@ -18028,7 +18029,7 @@ /* Index Format Action */ new_confline(&ctmp); - ctmp->help_title= "HELP FOR SET INDEX FORMAT ACTION"; + ctmp->help_title= "設定索引格式動作的輔助說明"; ctmp->var = &iform_act_var; ctmp->valoffset = indent; ctmp->keymenu = &config_text_keymenu; @@ -18168,7 +18169,7 @@ new_confline(&ctmp); ctmp->var = &opt_var; - ctmp->help_title= "HELP FOR FILTER FEATURES"; + ctmp->help_title= "過濾器功\能的輔助說明"; ctmp->varnamep = ctmpb; ctmp->keymenu = &config_checkbox_keymenu; switch(i){ @@ -18252,7 +18253,7 @@ for(i = 0; f = role_repl_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR ROLE REPLY USE"; + ctmp->help_title= "身份回覆使用的輔助說明"; ctmp->var = &repl_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -18315,7 +18316,7 @@ for(i = 0; f = role_forw_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR ROLE FORWARD USE"; + ctmp->help_title= "身份轉寄使用的輔助說明"; ctmp->var = &forw_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -18378,7 +18379,7 @@ for(i = 0; f = role_comp_types(i); i++){ new_confline(&ctmp); - ctmp->help_title= "HELP FOR ROLE COMPOSE USE"; + ctmp->help_title= "身份編輯使用的輔助說明"; ctmp->var = &comp_type_var; ctmp->valoffset = 12; ctmp->keymenu = &config_radiobutton_keymenu; @@ -20004,7 +20005,7 @@ if(wt_res == 'y'){ if(action){ if(context_create(cntxt, NULL, cur_fn)){ - q_status_message(SM_ORDER,3,5,"Folder created"); + q_status_message(SM_ORDER,3,5,"信件匣已被建立"); maybe_add_to_incoming(cntxt, cur_fn); } } @@ -20014,10 +20015,10 @@ } else if(wt_res == 'n' && action){ rv = 2; - q_status_message(SM_ORDER,3,5,"Folder not created"); + q_status_message(SM_ORDER,3,5,"信件匣未被建立"); } else{ - q_status_message(SM_ORDER,3,5,"Exit cancelled"); + q_status_message(SM_ORDER,3,5,"取消"); rv = 0; break; } @@ -20132,7 +20133,7 @@ if(found){ q_status_message1(SM_ORDER | SM_DING, 3, 5, - "Nickname \"%.200s\" is already in use", + "暱稱 \"%.200s\" 已在使用中", nname); continue; } @@ -20140,7 +20141,7 @@ break; } else if(rc == 3) - q_status_message(SM_ORDER, 0, 3, "No help yet."); + q_status_message(SM_ORDER, 0, 3, "尚無輔助說明。"); else if(rc == 1){ q_status_message1(SM_ORDER, 0, 3, "Not adding nickname to %.200s list", @@ -20270,11 +20271,11 @@ rv = check_role_folders(spec_fldr, 0); free_list_array(&spec_fldr); if(rv == 2) - q_status_message(SM_ORDER,0,3,"Ok, messages matching that Pattern will be deleted"); + q_status_message(SM_ORDER,0,3,"好的,符合該式樣的信件將被刪除"); } else{ q_status_message(SM_ORDER, 0, 3, - "Ok, messages matching that Pattern will be deleted"); + "好的,符合該式樣的信件將被刪除"); rv = 2; } break; @@ -20323,7 +20324,7 @@ case 'x': /* ^C */ default : - q_status_message(SM_ORDER,3,5,"Changes not yet saved"); + q_status_message(SM_ORDER,3,5,"修改尚未存入"); rv = 0; break; } @@ -20785,12 +20786,12 @@ break; case 'n': - q_status_message(SM_ORDER,3,5,"No changes saved"); + q_status_message(SM_ORDER,3,5,"修改未被存入"); rv = 10; break; case 'x': /* ^C */ - q_status_message(SM_ORDER,3,5,"Changes not yet saved"); + q_status_message(SM_ORDER,3,5,"修改尚未存入"); rv = 0; break; } @@ -21002,14 +21003,14 @@ sig = (srchstr((*cl)->varname, "signature") != NULL); if(!file || !*file){ err = (char *)fs_get(100 * sizeof(char)); - sprintf(err, "No %s file defined. First define a file name.", - sig ? "signature" : "template"); + sprintf(err, "尚未定義%s檔。先定義一檔案名稱。", + sig ? "簽名" : "模板"); } else{ if(file[len=(strlen(file)-1)] == '|') file[len] = '\0'; - sprintf(title, "%s EDITOR", sig ? "SIGNATURE" : "TEMPLATE"); + sprintf(title, "%s編輯器", sig ? "簽名檔" : "模板"); err = signature_edit(file, title); } @@ -21048,7 +21049,7 @@ if(i == 0) break; else if(i == 1){ - cmd_cancelled("eXtraHdr"); + cmd_cancelled("額外標頭"); cancel = 1; break; } @@ -21179,10 +21180,10 @@ eaprev = ea; } - sprintf(tmp, "Really remove \"%.100s\" pattern from this rule", + sprintf(tmp, "真的自本規則中刪除式樣 \"%.100s\"", (ea && ea->a && ea->a->field) ? ea->a->field : "this"); if(want_to(tmp, 'y', 'n', NO_HELP, WT_NORM) != 'y'){ - cmd_cancelled("RemoveHdr"); + cmd_cancelled("刪除標頭"); return(rv); } @@ -21248,8 +21249,8 @@ char prompt[60]; rv = 0; - sprintf(prompt, "%s the interval : ", - PVAL((*cl)->var, ew) ? "Change" : "Enter"); + sprintf(prompt, "%s區間值:", + PVAL((*cl)->var, ew) ? "修改" : "輸入"); ps->mangled_footer = 1; help = NO_HELP; @@ -21276,7 +21277,7 @@ (*cl)->value = pretty_value(ps, *cl); } else if(i == 1) - cmd_cancelled(cmd == MC_ADD ? "Add" : "Change"); + cmd_cancelled(cmd == MC_ADD ? "新增" : "修改"); else if(i == 3){ help = help == NO_HELP ? h_config_edit_scorei : NO_HELP; continue; @@ -21856,8 +21857,8 @@ memset(&screen, 0, sizeof(screen)); screen.deferred_ro_warning = readonly_warning; switch(conf_scroll_screen(ps, &screen, first_line, - edit_exceptions ? "SETUP COLOR EXCEPTIONS" - : "SETUP COLOR", + edit_exceptions ? "設定例外顏色" + : "設定顏色", "configuration ", 0)){ case 0: break; @@ -22311,7 +22312,7 @@ { int i, lv, count; char tmp[100+1]; - char *title = "HELP FOR SETTING UP COLOR"; + char *title = "設定色彩的輔助說明"; char *pvalfg, *pvalbg; @@ -22644,11 +22645,11 @@ ((*cl)->var+1)->post_user_val.p || (*cl)->var->main_user_val.p || ((*cl)->var+1)->main_user_val.p) - && want_to("Delete old unused personal option setting", + && want_to("刪除舊有未使用的個人選項設定", 'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ delete_user_vals((*cl)->var); delete_user_vals((*cl)->var+1); - q_status_message(SM_ORDER, 0, 3, "Deleted"); + q_status_message(SM_ORDER, 0, 3, "已刪除"); rv = 1; } @@ -23201,9 +23202,9 @@ case MC_DEFAULT : /* restore default values */ /* First, confirm that user wants to restore all default colors */ - if(want_to("Really restore all colors to default values", + if(want_to("真的回復所有顏色至預設值", 'y', 'n', NO_HELP, WT_NORM) != 'y'){ - cmd_cancelled("RestoreDefs"); + cmd_cancelled("回存預設值"); return(rv); } @@ -23295,7 +23296,7 @@ if(i == 0) break; else if(i == 1){ - cmd_cancelled("Add"); + cmd_cancelled("新增"); cancel = 1; break; } @@ -23401,9 +23402,9 @@ break; } - if(want_to("Really delete header color from config", + if(want_to("真的自設定中刪除標頭顏色", 'y', 'n', NO_HELP, WT_NORM) != 'y'){ - cmd_cancelled("Delete"); + cmd_cancelled("已刪除"); return(rv); } @@ -23520,7 +23521,7 @@ if((prevcolor < 0 && nextcolor < 0) || !*alval){ q_status_message(SM_ORDER, 0, 3, - "Shuffle only makes sense when there is more than one Header Color defined"); + "僅在多個標頭顏色被定義時重整才有意義"); return(rv); } @@ -23529,12 +23530,12 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; - opts[i++].label = "Up"; + opts[i++].label = "上"; opts[i].ch = 'd'; opts[i].rval = 'd'; opts[i].name = "D"; - opts[i++].label = "Down"; + opts[i++].label = "下"; opts[i].ch = -1; deefault = 'u'; @@ -23559,7 +23560,7 @@ switch(i){ case 'x': - cmd_cancelled("Shuffle"); + cmd_cancelled("重整"); return(rv); case 'u': @@ -24110,8 +24111,8 @@ memset(&screen, 0, sizeof(screen)); screen.ro_warning = saved_screen ? saved_screen->deferred_ro_warning : 0; rv = conf_scroll_screen(ps, &screen, first_line, - ew == Post ? "SETUP COLOR EXCEPTIONS" - : "SETUP COLOR", + ew == Post ? "設定例外顏色" + : "設定顏色", "configuration ", 1); opt_screen = saved_screen; --- pine/newmail.c.orig Fri Jan 14 08:43:13 2005 +++ pine/newmail.c Fri Oct 7 21:53:28 2005 @@ -687,18 +687,9 @@ char *subject = NULL, *from = NULL, tmp[MAILTMPLEN+1], *p, *folder = NULL, intro[MAX_SCREEN_COLS+1], subj_leadin[MAILTMPLEN]; - static char *carray[] = { "regarding", - "concerning", - "about", - "as to", - "as regards", - "as respects", - "in re", - "re", - "respecting", - "in point of", - "with regard to", - "subject:" + static char *carray[] = { "關於", + "有關", + "標題為:" }; if(stream) @@ -735,7 +726,7 @@ SIZEOF_20KBUF, tmp, NULL)); } - sprintf(subj_leadin, " %s ", carray[(unsigned)random()%12]); + sprintf(subj_leadin, " %s ", carray[(unsigned)random()%2]); if(!from) subj_leadin[1] = toupper((unsigned char)subj_leadin[1]); } @@ -755,29 +746,29 @@ if(!folder){ if(number > 1) - sprintf(intro, "%ld new messages!", number); + sprintf(intro, "%ld 封新信!", number); else - sprintf(intro, "New mail%s!", - (e && address_is_us(e->to, ps_global)) ? " to you" : ""); + sprintf(intro, "%s新信!", + (e && address_is_us(e->to, ps_global)) ? "寄給您的" : ""); } else { long fl, tot, newfl; if(number > 1) - sprintf(intro, "%ld messages saved to folder \"%.80s\"", + sprintf(intro, "%ld 封信被存至 \"%.80s\" 信件匣中", number, folder); else - sprintf(intro, "Mail saved to folder \"%.80s\"", folder); + sprintf(intro, "信件被存至 \"%.80s\" 信件匣中", folder); if((fl=strlen(folder)) > 10 && (tot=strlen(intro) + strlen(from ? from : "") + strlen(subject)) > ps_global->ttyo->screen_cols - 2){ newfl = max(10, fl-(tot-(ps_global->ttyo->screen_cols - 2))); if(number > 1) - sprintf(intro, "%ld messages saved to folder \"...%.80s\"", + sprintf(intro, "%ld 封信被存至 \"...%.80s\" 信件匣中", number, folder+(fl-(newfl-3))); else - sprintf(intro, "Mail saved to folder \"...%.80s\"", + sprintf(intro, "信件已被存至 \"...%.80s\" 信件匣中", folder+(fl-(newfl-3))); } } @@ -785,15 +776,15 @@ if(!for_new_mail_win) q_status_message7(SM_ASYNC | SM_DING, 0, 60, "%s%s%s%.80s%s%.80s%s", intro, - from ? ((number > 1L) ? " Most recent f" : " F") : "", - from ? "rom " : "", + from ? ((number > 1L) ? " 最近一封來" : " 來") : "", + from ? "自 " : "", from ? from : "", (number <= 1L) ? (subject[0] ? subj_leadin : "") : "", (number <= 1L) ? (subject[0] ? subject - : from ? " w" : " W") + : from ? " 沒" : " 沒") : "", - (number <= 1L) ? (subject[0] ? "" : "ith no subject") + (number <= 1L) ? (subject[0] ? "" : "有主題") : ""); #if (!defined(DOS) && !defined(OS2) && !defined(LEAVEOUTFIFO)) || defined(_WINDOWS) else { @@ -830,8 +821,8 @@ } else sprintf(tmp_20k_buf, "%s%s%s%.80s", intro, - from ? ((number > 1L) ? " Most recent f" : " F") : "", - from ? "rom " : "", + from ? ((number > 1L) ? " 最近一封來" : " 來") : "", + from ? "自 " : "", from ? from : ""); icon_text(tmp_20k_buf, IT_NEWMAIL); --- pine/mailview.c.orig Wed Sep 21 02:26:20 2005 +++ pine/mailview.c Fri Oct 7 21:53:28 2005 @@ -165,11 +165,11 @@ * Handle hints. */ #define HANDLE_INIT_MSG \ - "Selectable items in text -- Use Up/Down Arrows to choose, Return to view" + "在文字中有可供選擇的項目 -- 使用上下鍵選擇,Return 鍵檢視" #define HANDLE_ABOVE_ERR \ - "No selected item displayed -- Use PrevPage to bring choice into view" + "沒有可供選擇的項目 -- 使用 PrevPage 將選擇帶至可檢視的範圍內" #define HANDLE_BELOW_ERR \ - "No selected item displayed -- Use NextPage to bring choice into view" + "沒有可供選擇的項目 -- 使用 NextPage 將選擇帶至可檢視的範圍內" #define PGSIZE(X) (ps_global->ttyo->screen_rows - (X)->screen.other_lines) @@ -192,8 +192,8 @@ static struct key view_keys[] = {HELP_MENU, OTHER_MENU, - {"<","MsgIndex",{MC_INDEX,3,{'i','<',','}},KS_FLDRINDEX}, - {">","ViewAttch",{MC_VIEW_ATCH,3,{'v','>','.'}},KS_NONE}, + {"<","索引",{MC_INDEX,3,{'i','<',','}},KS_FLDRINDEX}, + {">","檢視附件",{MC_VIEW_ATCH,3,{'v','>','.'}},KS_NONE}, PREVMSG_MENU, NEXTMSG_MENU, PREVPAGE_MENU, @@ -218,11 +218,11 @@ HELP_MENU, OTHER_MENU, - {"Ret","[View Hilite]",{MC_VIEW_HANDLE,3, + {"Ret","[檢視 Hilite]",{MC_VIEW_HANDLE,3, {ctrl('m'),ctrl('j'),KEY_RIGHT}},KS_NONE}, - {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, - {"^B","Prev URL",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, - {"^F","Next URL",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, + {":","選擇",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, + {"^B","前一 URL",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, + {"^F","次一 URL",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, JUMP_MENU, TAB_MENU, HDRMODE_MENU, @@ -256,7 +256,7 @@ static struct key simple_text_keys[] = {HELP_MENU, NULL_MENU, - {"E","Exit Viewer",{MC_EXIT,1,{'e'}},KS_EXITMODE}, + {"E","離開",{MC_EXIT,1,{'e'}},KS_EXITMODE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -265,7 +265,7 @@ PRYNTTXT_MENU, WHEREIS_MENU, FWDEMAIL_MENU, - {"S", "Save", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; + {"S", "存檔", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; INST_KEY_MENU(simple_text_keymenu, simple_text_keys); @@ -440,7 +440,7 @@ * we were viewing. If so, make sure we don't just come back. */ if(mn_get_total(ps->msgmap) <= 0L || !ps->mail_stream){ - q_status_message(SM_ORDER, 0, 3, "No messages to read!"); + q_status_message(SM_ORDER, 0, 3, "沒有可供讀取的信件!"); ps->next_screen = mail_index_screen; break; } @@ -462,7 +462,7 @@ && raw_msgno <= ps->mail_stream->nmsgs && (mc = mail_elt(ps->mail_stream, raw_msgno)))){ q_status_message1(SM_ORDER, 3, 3, - "Error getting message %.200s data", + "取得信件 %.200s 的資料時發生錯誤", comatose(mn_get_cur(ps->msgmap))); dprint(1, (debugfile, "!!!! ERROR fetching %s of msg %ld\n", env ? "elt" : "env", mn_get_cur(ps->msgmap))); @@ -535,7 +535,7 @@ memset(&scrollargs, 0, sizeof(SCROLL_S)); scrollargs.text.text = so_text(store); scrollargs.text.src = src; - scrollargs.text.desc = "message"; + scrollargs.text.desc = "信件"; /* * make first selectable handle the default @@ -564,11 +564,11 @@ scrollargs.use_indexline_color = 1; - scrollargs.bar.title = "MESSAGE TEXT"; + scrollargs.bar.title = "信件文字"; scrollargs.end_scroll = view_end_scroll; scrollargs.resize_exit = 1; scrollargs.help.text = h_mail_view; - scrollargs.help.title = "HELP FOR MESSAGE TEXT VIEW"; + scrollargs.help.title = "信件文字的輔助說明"; scrollargs.keys.menu = &view_keymenu; scrollargs.keys.what = save_what; setbitmap(scrollargs.keys.bitmap); @@ -1514,7 +1514,7 @@ q_status_message(SM_INFO, 0, 3, "All quoted text being included"); else if(ps_global->full_header == 2) q_status_message(SM_INFO, 0, 3, - "Full header mode ON. All header text being included"); + "完整標頭模式開啟。所有的標頭文字都包含在內"); HD_INIT(&h, ps_global->VAR_VIEW_HEADERS, ps_global->view_all_except, FE_DEFAULT); @@ -1554,7 +1554,7 @@ fs_give((void **)&append_file_name); } - q_status_message1(SM_ORDER,3,3,"Can't make temp file: %.200s", + q_status_message1(SM_ORDER,3,3,"無法建立暫存檔:%.200s", error_description(errno)); return(0); } @@ -1943,7 +1943,7 @@ write_error: if(!(flgs & FM_DISPLAY)) - q_status_message1(SM_ORDER, 3, 4, "Error writing message: %.200s", + q_status_message1(SM_ORDER, 3, 4, "寫入信件時發生錯誤:%.200s", decode_err ? decode_err : error_description(errno)); return(0); @@ -2683,12 +2683,12 @@ char prompt[256], tmp[MAILTMPLEN]; int rc, flags, local_h; static ESCKEY_S launch_opts[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, {-2, 0, NULL, NULL}, {-2, 0, NULL, NULL}, - {0, 'u', "U", "editURL"}, - {0, 'a', "A", "editApp"}, + {0, 'u', "U", "編輯 URL"}, + {0, 'a', "A", "編輯應用程式"}, {-1, 0, NULL, NULL}}; if(handle->type == URL){ @@ -2714,11 +2714,11 @@ if(!local_h){ if(ps_global->vars[V_BROWSER].is_fixed){ q_status_message(SM_ORDER, 3, 4, - "URL-Viewer is disabled by sys-admin"); + "URL 檢視程式已被系統管理員關閉"); return(0); } else{ - if(want_to("No URL-Viewer application defined. Define now", + if(want_to("尚未定義 URL 檢視程式!現在定義", 'y', 0, NO_HELP, WT_SEQ_SENSITIVE) == 'y'){ /* Prompt for the displayer? */ tmp[0] = '\0'; @@ -2762,7 +2762,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 2, 2, - "Browser not found: %.200s", + "找不到瀏覽器:%.200s", error_description(errno)); continue; } @@ -2802,12 +2802,12 @@ */ if(handle->type == URL && !struncmp(handle->h.url.path, "mailto:", 7)) - sprintf(prompt, "Compose mail to \"%.*s%s\" ? ", + sprintf(prompt, "編輯給 \"%.*s%s\" 的信件?", min(max(0,sc - 25), sizeof(prompt)-50), handle->h.url.path+7, (strlen(handle->h.url.path+7) > max(0,sc-25)) ? "..." : ""); else - sprintf(prompt, "View selected %s %s%.*s%s ? ", - (handle->type == URL) ? "URL" : "Attachment", + sprintf(prompt, "檢視選擇的 %s %s%.*s%s ? ", + (handle->type == URL) ? "URL" : "附件", (handle->type == URL) ? "<" : "", min(max(0,sc-27), sizeof(prompt)-50), (handle->type == URL) ? handle->h.url.path : "", @@ -2867,10 +2867,10 @@ OE_KEEP_TRAILING_SPACE | OE_DISALLOW_HELP; - sprintf(prompt, "Viewer command: "); + sprintf(prompt, "檢視器命令:"); rc = optionally_enter(tmp, -FOOTER_ROWS(ps_global), 0, - sizeof(tmp), "Viewer Command: ", + sizeof(tmp), "檢視器命令:", NULL, NO_HELP, &flags); if(rc == 0){ if(flags & OE_USER_MODIFIED){ @@ -4678,11 +4678,11 @@ mode = PIPE_RESET | PIPE_USER | PIPE_RUNNOW ; if(syspipe = open_system_pipe(cmd, NULL, NULL, mode, 0)){ close_system_pipe(&syspipe, NULL, 0); - q_status_message(SM_ORDER, 0, 4, "VIEWER command completed"); + q_status_message(SM_ORDER, 0, 4, "檢視器命令完成"); } else q_status_message1(SM_ORDER, 3, 4, - "Cannot spawn command : %.200s", cmd); + "無法起始命令:%.200s", cmd); } else if(f = url_local_handler(handle->h.url.path)){ if((*f)(handle->h.url.path) > 1) @@ -4690,7 +4690,7 @@ } else q_status_message1(SM_ORDER, 2, 2, - "\"URL-Viewer\" not defined: Can't open %.200s", + "尚未定義 \"URL-檢視器\":無法開啟 %.200s", handle->h.url.path); return(rv); @@ -4702,7 +4702,7 @@ int return_value; { q_status_message(SM_ORDER | SM_DING, 3, 3, - "Can't spawn. Command too long."); + "無法起始。命令太長。"); return(return_value); } @@ -5024,7 +5024,7 @@ role = combine_inherited_role(role); else{ /* cancel */ role = NULL; - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); goto outta_here; } } @@ -5080,7 +5080,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't create space for composer"); + "無法替編輯器建立空間"); outta_here: if(outgoing) @@ -5152,7 +5152,7 @@ else if(errstr) q_status_message(SM_ORDER|SM_DING, 3, 3, errstr); else - cmd_cancelled("URL Launch"); + cmd_cancelled("檢視 URL"); break; @@ -5175,7 +5175,7 @@ if(uid_val != ps_global->mail_stream->uid_validity){ /* Complain! */ q_status_message(SM_ORDER|SM_DING, 3, 3, - "Warning! Referenced folder changed since URL recorded"); + "警告!參考資料匣已於 URL 記錄後改變"); } if(uid){ @@ -5191,7 +5191,7 @@ if(i > mn_get_total(ps_global->msgmap)) q_status_message(SM_ORDER, 2, 3, - "Couldn't find specified article number"); + "找不到指定的文章編號"); } else if(search){ /* @@ -5218,9 +5218,9 @@ if(i = any_lflagged(ps_global->msgmap, MN_SLCT)){ - q_status_message2(SM_ORDER, 0, 3, - "%.200s message%.200s selected", - long2string(i), plural(i)); + q_status_message1(SM_ORDER, 0, 3, + "已選擇 %.200s 封信件", + long2string(i)); /* Zoom the index! */ zoom_index(ps_global, ps_global->mail_stream, ps_global->msgmap); @@ -5372,7 +5372,7 @@ if(auth && *auth != '*' && strucmp(auth, "anonymous")) q_status_message(SM_ORDER, 3, 3, - "Unsupported authentication method. Using standard login."); + "未支援的認證方式。使用標準登入。"); /* * At this point our structure should contain the @@ -5459,7 +5459,7 @@ if(i == 0 || i > mn_get_total(ps_global->msgmap)) q_status_message(SM_ORDER, 2, 3, - "Couldn't find specified article number"); + "找不到指定的文章編號"); } break; @@ -5604,7 +5604,7 @@ } else q_status_message1(SM_ORDER | SM_DING, 0, 3, - "Can't find fragment: %.200s", fragment); + "找不到片斷:%.200s", fragment); return(1); } @@ -5632,7 +5632,7 @@ url ? url : "", reason ? reason : "?")); if(url) q_status_message3(SM_ORDER|SM_DING, 2, 3, - "Malformed \"%.*s\" URL: %.200s", + "格式錯誤的 \"%.*s\" URL:%.200s", (void *) (strchr(url, ':') - url), url, reason); return(0); @@ -5994,7 +5994,7 @@ write_error: if(style == QStatus) - q_status_message1(SM_ORDER, 3, 4, "Error writing message: %.200s", + q_status_message1(SM_ORDER, 3, 4, "寫入信件時發生錯誤:%.200s", error_description(errno)); return(1); @@ -6251,7 +6251,7 @@ gf_set_so_readc(&tmp_gc, df_store); if(errstr = dfilter(display_filter, tmp_store, tmp_pc, NULL)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Formatting error: %.200s", errstr); + "格式錯誤:%.200s", errstr); rv = FHT_WRTERR; } else @@ -6261,7 +6261,7 @@ } else{ q_status_message(SM_ORDER | SM_DING, 3, 3, - "No space for filtered text."); + "沒有足夠的空間過濾文字。"); rv = FHT_WRTERR; } } @@ -6307,7 +6307,7 @@ if(errstr = gf_pipe(tmp_gc, final_pc)){ rv = FHT_WRTERR; q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't build header : %.200s", errstr); + "無法建立標頭:%.200s", errstr); } } @@ -7257,7 +7257,7 @@ } if(!sparms->bar.title) - sparms->bar.title = "Text"; + sparms->bar.title = "文字"; if(sparms->bar.style == TitleBarNone){ if(THREADING() && sp_viewing_a_thread(ps_global->mail_stream)) @@ -7441,7 +7441,7 @@ } if(first_view && num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "ALL of %.200s", STYLE_NAME(sparms)); + q_status_message1(SM_INFO, 0, 1, "%.200s全部", STYLE_NAME(sparms)); force = 0; /* may not need to next time around */ @@ -7579,7 +7579,7 @@ whereis_pos.row = 0; if(sparms->help.text == NO_HELP){ q_status_message(SM_ORDER, 0, 5, - "No help text currently available"); + "目前尚無輔助說明"); break; } @@ -7618,7 +7618,7 @@ cur_top_line -= scroll_lines; if(cur_top_line <= 0){ cur_top_line = 0; - q_status_message1(SM_INFO, 0, 1, "START of %.200s", + q_status_message1(SM_INFO, 0, 1, "%.200s起始", STYLE_NAME(sparms)); } } @@ -7634,7 +7634,7 @@ } if(!next_handle) - q_status_message1(SM_ORDER, 0, 1, "Already at start of %.200s", + q_status_message1(SM_ORDER, 0, 1, "已經在%.200s的起始", STYLE_NAME(sparms)); } @@ -7652,12 +7652,12 @@ cur_top_line += scroll_lines; if(cur_top_line + num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "END of %.200s", + q_status_message1(SM_INFO, 0, 1, "%.200s結尾", STYLE_NAME(sparms)); } else if(!sparms->end_scroll || !(done = (*sparms->end_scroll)(sparms))){ - q_status_message1(SM_ORDER, 0, 1, "Already at end of %.200s", + q_status_message1(SM_ORDER, 0, 1, "已經在%.200s的結尾", STYLE_NAME(sparms)); /* hilite last available handle */ if(sparms->text.handles){ @@ -7761,11 +7761,11 @@ whereis_pos.row = 0; cur_top_line++; if(cur_top_line + num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "END of %.200s", + q_status_message1(SM_INFO, 0, 1, "%.200s結尾", STYLE_NAME(sparms)); } else - q_status_message1(SM_ORDER, 0, 1, "Already at end of %.200s", + q_status_message1(SM_ORDER, 0, 1, "已經在%.200s的結尾", STYLE_NAME(sparms)); } @@ -7828,12 +7828,12 @@ if(cur_top_line){ cur_top_line--; if(cur_top_line == 0) - q_status_message1(SM_INFO, 0, 1, "START of %.200s", + q_status_message1(SM_INFO, 0, 1, "%.200s起始", STYLE_NAME(sparms)); } else q_status_message1(SM_ORDER, 0, 1, - "Already at start of %.200s", + "已經在%.200s的起始", STYLE_NAME(sparms)); } @@ -7868,7 +7868,7 @@ } q_status_message1(SM_ORDER, 0, 1, - "Already on last item in %.200s", + "已經在%.200s中最後一個可選擇的項目上", STYLE_NAME(sparms)); } @@ -7903,7 +7903,7 @@ } q_status_message1(SM_ORDER, 0, 1, - "Already on first item in %.200s", + "已經在%.200s中第一個可選擇的項目上", STYLE_NAME(sparms)); } @@ -8062,8 +8062,8 @@ q_status_message(SM_ORDER, 0, 3, tmp_20k_buf); else q_status_message2(SM_ORDER, 0, 3, - "%.200sFound on line %.200s on screen", - result ? "Search wrapped to start. " : "", + "%.200s在畫面上第 %.200s 行找到", + result ? "重頭搜尋。" : "", int2string(whereis_pos.row)); if(key){ @@ -8080,9 +8080,9 @@ } } else if(found_on == -1) - cmd_cancelled("Search"); + cmd_cancelled("搜尋"); else - q_status_message(SM_ORDER, 0, 3, "Word not found"); + q_status_message(SM_ORDER, 0, 3, "找不到該字"); } break; @@ -8254,7 +8254,7 @@ /*----------- Save the displayed text ------------*/ case MC_SAVETEXT : (void)simple_export(ps_global, sparms->text.text, - sparms->text.src, "text", NULL); + sparms->text.src, "文字", NULL); break; @@ -8490,13 +8490,13 @@ int rc, flags; static char search_string[MAX_SEARCH+1] = { '\0' }; static ESCKEY_S word_search_key[] = { { 0, 0, "", "" }, - {ctrl('Y'), 10, "^Y", "First Line"}, - {ctrl('V'), 11, "^V", "Last Line"}, + {ctrl('Y'), 10, "^Y", "第一行"}, + {ctrl('V'), 11, "^V", "最後一行"}, {-1, 0, NULL, NULL} }; report[0] = '\0'; - sprintf(prompt, "Word to search for [%.*s] : ", + sprintf(prompt, "搜尋字串[%.*s] : ", sizeof(prompt)-50, search_string); help = NO_HELP; nsearch_string[0] = '\0'; @@ -8512,11 +8512,11 @@ continue; } else if(rc == 10){ - strcpy(report, "Searched to First Line."); + strcpy(report, "搜尋至第一行。"); return(-4); } else if(rc == 11){ - strcpy(report, "Searched to Last Line."); + strcpy(report, "搜尋至最後一行。"); return(-5); } @@ -9872,12 +9872,12 @@ if(*msg_p[0]) for(i = 0; i < msg_q; i++) q_status_message2(SM_ORDER, 3, 4, - "%.200s Result: %.200s", title, msg_p[i]); + "%.200s 結果:%.200s", title, msg_p[i]); else q_status_message2(SM_ORDER, 0, 4, "%.200s%.200s", title, alt_msg ? alt_msg - : " command completed with no output"); + : " 命令已完成(沒有輸出)"); fclose(f); f = NULL; @@ -9890,7 +9890,7 @@ q_status_message2(SM_ORDER, 0, 4, "%.200s%.200s", title, alt_msg ? alt_msg - : " command completed with no output"); + : " 命令已完成(沒有輸出)"); fclose(f); f = NULL; } @@ -9900,12 +9900,12 @@ SCROLL_S sargs; char title_buf[64]; - sprintf(title_buf, "HELP FOR %s VIEW", title); + sprintf(title_buf, "%s 檢視的輔助說明", title); memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = f; sargs.text.src = FileStar; - sargs.text.desc = "output"; + sargs.text.desc = "輸出"; sargs.bar.title = title; sargs.bar.style = TextPercent; sargs.help.text = h_simple_text_view; @@ -10149,7 +10149,7 @@ break; case -1 : - cmd_cancelled("View"); + cmd_cancelled("檢視"); break; default : --- pine/mailpart.c.orig Thu Apr 28 02:53:45 2005 +++ pine/mailpart.c Fri Oct 7 21:53:28 2005 @@ -146,18 +146,18 @@ {HELP_MENU, OTHER_MENU, {"<",NULL,{MC_EXIT,2,{'<',','}},KS_EXITMODE}, - {">","[View]",{MC_VIEW_ATCH,5,{'v','>','.',ctrl('M'),ctrl('J')}}, + {">","[檢視]",{MC_VIEW_ATCH,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_VIEW}, - {"P", "PrevAttch",{MC_PREVITEM,4,{'p',ctrl('B'),ctrl('P'),KEY_UP}}, + {"P", "前一附件",{MC_PREVITEM,4,{'p',ctrl('B'),ctrl('P'),KEY_UP}}, KS_PREVMSG}, - {"N", "NextAtch", + {"N", "次一附件", {MC_NEXTITEM, 5, {'n','\t',ctrl('F'),ctrl('N'), KEY_DOWN}}, KS_NEXTMSG}, PREVPAGE_MENU, NEXTPAGE_MENU, DELETE_MENU, UNDELETE_MENU, - {"S", "Save", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}, + {"S", "存檔", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}, {NULL, NULL, {MC_EXPORT, 1, {'e'}}, KS_EXPORT}, HELP_MENU, @@ -166,9 +166,9 @@ QUIT_MENU, PIPE_MENU, BOUNCE_MENU, - {"A","AboutAttch",{MC_ABOUTATCH,1,{'a'}},KS_NONE}, + {"A","關於附件",{MC_ABOUTATCH,1,{'a'}},KS_NONE}, WHEREIS_MENU, - {"%", "Print", MC_PRINTMSG,1,{'%'}, KS_PRINT}, + {"%", "列印", MC_PRINTMSG,1,{'%'}, KS_PRINT}, INDEX_MENU, REPLY_MENU, FORWARD_MENU}; @@ -186,10 +186,10 @@ {HELP_MENU, OTHER_MENU, {"<",NULL,{MC_EXIT,2,{'<',','}},KS_EXITMODE}, - {"Ret","[View Hilite]",{MC_VIEW_HANDLE,3, + {"Ret","[檢視 Hilite]",{MC_VIEW_HANDLE,3, {ctrl('m'),ctrl('j'),KEY_RIGHT}},KS_NONE}, - {"^B","Prev URL",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, - {"^F","Next URL",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, + {"^B","前一 URL",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, + {"^F","次一 URL",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, DELETE_MENU, @@ -205,7 +205,7 @@ BOUNCE_MENU, NULL_MENU, WHEREIS_MENU, - {"%", "Print", MC_PRINTMSG,1,{'%'}, KS_PRINT}, + {"%", "列印", MC_PRINTMSG,1,{'%'}, KS_PRINT}, NULL_MENU, REPLY_MENU, FORWARD_MENU}; @@ -343,12 +343,12 @@ if(mn_total_cur(ps->msgmap) > 1L){ q_status_message(SM_ORDER | SM_DING, 0, 3, - "Can only view one message's attachments at a time."); + "同一時間僅能檢視一封信的附件!"); return; } else if(ps->atmts && ps->atmts->description && !(ps->atmts + 1)->description) q_status_message1(SM_ASYNC, 0, 3, - "Message %.200s has only one part (the message body), and no attachments.", + "信件 %.200s 僅有一部分(信件本體),沒有附件。", long2string(mn_get_cur(ps->msgmap))); /* @@ -530,7 +530,7 @@ last_type = current->attp->body->type; last_subtype = current->attp->body->subtype; - sprintf(backtag, "Msg #%ld", mn_get_cur(ps->msgmap)); + sprintf(backtag, "信件 #%ld", mn_get_cur(ps->msgmap)); km->keys[ATT_PARENT_KEY].label = backtag; if(F_OFF(F_ENABLE_PIPE, ps)) @@ -556,7 +556,7 @@ clrbitn(ATT_PRINT_KEY, bitmap); km->keys[ATT_EXPORT_KEY].name = "E"; - km->keys[ATT_EXPORT_KEY].label = "Export"; + km->keys[ATT_EXPORT_KEY].label = "匯出"; } if(km_popped){ @@ -623,7 +623,7 @@ break; } - helper(h_attachment_screen, "HELP FOR ATTACHMENT INDEX", 0); + helper(h_attachment_screen, "附件索引的輔助說明", 0); ps->mangled_screen = 1; break; @@ -652,7 +652,7 @@ if(ctmp = next_attline(current)) current = ctmp; else - q_status_message(SM_ORDER, 0, 1, "Already on last attachment"); + q_status_message(SM_ORDER, 0, 1, "已經到最後一附件了"); break; @@ -660,7 +660,7 @@ if(ctmp = prev_attline(current)) current = ctmp; else - q_status_message(SM_ORDER, 0, 1, "Already on first attachment"); + q_status_message(SM_ORDER, 0, 1, "已經到第一個附件了"); break; @@ -674,7 +674,7 @@ } else q_status_message(SM_ORDER, 0, 1, - "Already on last page of attachments"); + "已經在附件的最後一頁了"); break; @@ -695,7 +695,7 @@ } else q_status_message(SM_ORDER, 0, 1, - "Already on first page of attachments"); + "已經在附件的第一頁了"); break; @@ -870,7 +870,7 @@ } q_status_message(SM_ORDER, 0, 3, - result ? result : "Word not found"); + result ? result : "找不到該字"); } break; @@ -1239,7 +1239,7 @@ free_color_pair(&titlecolor); } - set_titlebar("ATTACHMENT INDEX", ps_global->mail_stream, + set_titlebar("附件索引", ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder, ps_global->msgmap, 1, MessageNumber, 0, 0, att_screen->titlecolor); @@ -1379,7 +1379,7 @@ export_digest_att(msgno, a); else q_status_message1(SM_ORDER, 0, 3, - "Can't Export %.200s. Use \"Save\" to write file, \"<\" to leave index.", + "無法輸出至 %.200s。使用 \"Save\" 以寫入檔案,\"<\" 離開索引。", body_type_names(a->body->type)); } @@ -1399,7 +1399,7 @@ gf_io_t pc; STORE_S *store; static ESCKEY_S att_save_opts[] = { - {ctrl('T'), 10, "^T", "To Files"}, + {ctrl('T'), 10, "^T", "檔案列表"}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; @@ -1440,7 +1440,7 @@ att_save_opts[++r].ch = ctrl('V'); att_save_opts[r].rval = 12; att_save_opts[r].name = "^V"; - att_save_opts[r].label = "Downld Msg"; + att_save_opts[r].label = "下載信件"; } #endif /* !(DOS || MAC) */ @@ -1448,7 +1448,7 @@ att_save_opts[++r].ch = ctrl('I'); att_save_opts[r].rval = 11; att_save_opts[r].name = "TAB"; - att_save_opts[r].label = "Complete"; + att_save_opts[r].label = "完成"; } att_save_opts[++r].ch = -1; @@ -1456,7 +1456,7 @@ sprintf(title_buf, "%s ATTACHMENT", method); r = get_export_filename(ps_global, filename, NULL, full_filename, - sizeof(filename), "attachment", title_buf, + sizeof(filename), "附件", title_buf, att_save_opts, &rflags, qline, GE_SEQ_SENSITIVE); if(r < 0){ @@ -1467,7 +1467,7 @@ case -2: q_status_message1(SM_ORDER, 0, 2, - "Can't save to file outside of %.200s", + "無法存至 %.200s 以外的檔案", ps_global->VAR_OPER_DIR); break; } @@ -1482,7 +1482,7 @@ if(ps_global->restricted){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Download disallowed in restricted mode"); + "限制模式中不允許\下載"); return; } @@ -1491,7 +1491,7 @@ dprint(1, (debugfile, "Download attachment called!\n")); if(store = so_get(FileStar, tfp, WRITE_ACCESS|OWNER_ONLY)){ - sprintf(prompt_buf, "Saving to \"%.50s\"", tfp); + sprintf(prompt_buf, "正在存入 \"%.50s\"", tfp); we_cancel = init_att_progress(prompt_buf, ps_global->mail_stream, a->body); @@ -1500,7 +1500,7 @@ if(err = detach(ps_global->mail_stream, msgno, a->number, &len, pc, NULL, 0)) q_status_message2(SM_ORDER | SM_DING, 3, 5, - "%.200s: Error writing attachment to \"%.200s\"", + "%.200s: 寫入附件至 \"%.200s\" 時發生錯誤", err, tfp); /* cancel regardless, so it doesn't get in way of xfer */ @@ -1518,12 +1518,12 @@ (void)close_system_pipe(&syspipe, NULL, 0); else q_status_message(SM_ORDER | SM_DING, 3, 3, - err = "Error running download command"); + err = "執行下載命令時發生錯誤"); } } else q_status_message(SM_ORDER | SM_DING, 3, 3, - err = "Error building temp file for download"); + err = "建立暫存檔時發生錯誤"); if(tfp){ (void)unlink(tfp); @@ -1531,7 +1531,7 @@ } if(!err) - q_status_message1(SM_ORDER, 0, 4, "Part %.200s downloaded", + q_status_message1(SM_ORDER, 0, 4, "已下載第 %.200s 部份", a->number); return; @@ -1581,12 +1581,12 @@ if((store = so_get(FileStar, file, WRITE_ACCESS)) == NULL){ q_status_message2(SM_ORDER | SM_DING, 3, 5, - "Error opening destination %.200s: %.200s", + "開啟目地檔 %.200s 時發生錯誤:%.200s", file, error_description(errno)); return -1; } - sprintf(sbuf, "Saving to \"%.50s\"", file); + sprintf(sbuf, "正在存入 \"%.50s\"", file); we_cancel = init_att_progress(sbuf, stream, a->body); gf_set_so_writec(&pc, store); @@ -1606,7 +1606,7 @@ truncate(file, (flags & GER_APPEND) ? (off_t) orig_size : (off_t) 0); q_status_message2(SM_ORDER | SM_DING, 3, 5, - "%.200s: Error writing attachment to \"%.200s\"", + "%.200s寫入附件至 \"%.200s\" 時發生錯誤", err, file); return -1; } @@ -1691,7 +1691,7 @@ MESSAGECACHE *mc; STORE_S *so; - sprintf(nmsgs, "Attached Msg (part %.20s) ", a->number); + sprintf(nmsgs, "附加的信件 (第 %.20s 部份) ", a->number); if(save_prompt(ps_global, &cntxt, newfolder, sizeof(newfolder), nmsgs, a->body->nested.msg->env, msgno, a->number, NULL)){ if(strucmp(newfolder, ps_global->inbox_name) == 0){ @@ -1719,11 +1719,11 @@ a->body->size.bytes, flags, date, so); if(rv == 1) q_status_message2(SM_ORDER, 0, 4, - "Attached message (part %.200s) saved to \"%.200s\"", + "附加的訊息(第 %.200s 部份)被存為 \"%.200s\"", a->number, save_folder); else if(rv == -1) - cmd_cancelled("Attached message Save"); + cmd_cancelled("存入附加訊息"); /* else whatever broke in save_fetch_append shoulda bitched */ so_give(&so); @@ -1732,7 +1732,7 @@ dprint(1, (debugfile, "Can't allocate store for save: %s\n", error_description(errno))); q_status_message(SM_ORDER | SM_DING, 3, 4, - "Problem creating space for message text."); + "建立信件文字空間時發生問題。"); } if(our_stream) @@ -1765,7 +1765,7 @@ if(MIME_MSG(part->body.type, part->body.subtype)) cnt++; - sprintf(nmsgs, "%d Msg Digest (part %.20s) ", cnt, a->number); + sprintf(nmsgs, "%d 信件 Digest (第 %.20s 部份) ", cnt, a->number); if(save_prompt(ps_global, &cntxt, newfolder, sizeof(newfolder), nmsgs, NULL, 0, NULL, NULL)){ @@ -1790,7 +1790,7 @@ dprint(1, (debugfile, "Can't allocate store for save: %s\n", error_description(errno))); q_status_message(SM_ORDER | SM_DING, 3, 4, - "Problem creating space for message text."); + "建立信件文字空間時發生問題。"); rv = 0; } @@ -1852,7 +1852,7 @@ ATTACH_S *ap = a; STORE_S *store; static ESCKEY_S opts[] = { - {ctrl('T'), 10, "^T", "To Files"}, + {ctrl('T'), 10, "^T", "檔案列表"}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; @@ -1860,26 +1860,26 @@ opts[i].ch = ctrl('I'); opts[i].rval = 11; opts[i].name = "TAB"; - opts[i].label = "Complete"; + opts[i].label = "完成"; } filename[0] = full_filename[0] = '\0'; rv = get_export_filename(ps_global, filename, NULL, full_filename, sizeof(filename), "msg attachment", - "MSG ATTACHMENT", opts, + "信件附件", opts, &rflags, -FOOTER_ROWS(ps_global), GE_IS_EXPORT | GE_SEQ_SENSITIVE); if(rv < 0){ switch(rv){ case -1: - cmd_cancelled("Export"); + cmd_cancelled("匯出檔案"); break; case -2: q_status_message1(SM_ORDER, 0, 2, - "Can't export to file outside of %.200s", + "無法將檔案匯出至 %.200s 以外的地方", ps_global->VAR_OPER_DIR); break; } @@ -1893,21 +1893,21 @@ q_status_message(SM_ORDER | SM_DING, 3, 4, err); else q_status_message3(SM_ORDER, 0, 4, - "Attached message (part %.200s) %.200s to \"%.200s\"", + "附加的文摘(第 %.200s 部份)%.200s 至 \"%.200s\"", a->number, rflags & GER_OVER - ? "overwritten" - : rflags & GER_APPEND ? "appended" : "written", + ? "已覆蓋\" + : rflags & GER_APPEND ? "已附加" : "已寫入", full_filename); if(so_give(&store)) q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Error writing %.200s: %.200s", + "寫入 %.200s 時發生錯誤:%.200s", full_filename, error_description(errno)); } else q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Error opening file \"%.200s\" to export message: %.200s", + "開啟檔案 \"%.200s\" 以輸出信件時發生錯誤:%.200s", full_filename, error_description(errno)); } @@ -1930,7 +1930,7 @@ ATTACH_S *ap; STORE_S *store; static ESCKEY_S opts[] = { - {ctrl('T'), 10, "^T", "To Files"}, + {ctrl('T'), 10, "^T", "檔案列表"}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; @@ -1938,25 +1938,25 @@ opts[i].ch = ctrl('I'); opts[i].rval = 11; opts[i].name = "TAB"; - opts[i].label = "Complete"; + opts[i].label = "完成"; } filename[0] = full_filename[0] = '\0'; rv = get_export_filename(ps_global, filename, NULL, full_filename, - sizeof(filename), "digest", "DIGEST ATTACHMENT", + sizeof(filename), "digest", "文摘附件", opts, &rflags, -FOOTER_ROWS(ps_global), GE_IS_EXPORT | GE_SEQ_SENSITIVE); if(rv < 0){ switch(rv){ case -1: - cmd_cancelled("Export"); + cmd_cancelled("匯出檔案"); break; case -2: q_status_message1(SM_ORDER, 0, 2, - "Can't export to file outside of %.200s", + "無法將檔案匯出至 %.200s 以外的地方", ps_global->VAR_OPER_DIR); break; } @@ -1981,7 +1981,7 @@ sprintf(tmp_20k_buf, " [Unknown Message subtype: %s ]\n", buftmp); if(!so_puts(store, tmp_20k_buf)) - err = "Can't write export file"; + err = "無法寫入匯出檔"; } else{ count++; @@ -1990,7 +1990,7 @@ } } else if(!so_puts(store, "Unknown type in Digest")) - err = "Can't write export file"; + err = "無法寫入匯出檔"; } if(so_give(&store)) @@ -1998,23 +1998,23 @@ if(err){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Error exporting: %.200s", err); + "匯出檔案時發生錯誤:%.200s", err); q_status_message1(SM_ORDER | SM_DING, 3, 3, - "%.200s messages exported before error occurred", err); + "%.200s 封信件在錯誤產生之前已被匯出", err); } else q_status_message4(SM_ORDER, 0, 4, - "%.200s messages in digest (part %.200s) %.200s to \"%.200s\"", + "共 %.200s 封在文摘中的信件(第 %.200s 部份)%.200s至 \"%.200s\"", long2string(count), a->number, rflags & GER_OVER - ? "overwritten" - : rflags & GER_APPEND ? "appended" : "written", + ? "被覆蓋\" + : rflags & GER_APPEND ? "被附加" : "被寫入", full_filename); } else q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Error opening file \"%.200s\" to export digest: %.200s", + "無法開啟檔案 \"%.200s\" 以供匯出至文摘:%.200s", full_filename, error_description(errno)); } @@ -2042,9 +2042,9 @@ return; } - sprintf(prompt, "attach%s %.100s ", - (a->body->type == TYPETEXT) ? "ment" : "ed message", - MIME_DGST_A(a) ? "digest" : a->number); + sprintf(prompt, "%s %.100s ", + (a->body->type == TYPETEXT) ? "附件" : "附加的信件", + MIME_DGST_A(a) ? "文摘" : a->number); if(open_printer(prompt) >= 0){ if(MIME_MSG_A(a)) (void) print_msg_att(msgno, a, next); @@ -2089,7 +2089,7 @@ q_status_message2(SM_ORDER | SM_DING, 3, 3, - "Error printing message %.200s, part %.200s", + "無法列印第 %.200s 封信件的第 %.200s 部份", long2string(msgno), a->number); return(0); } @@ -2129,7 +2129,7 @@ 0, 80, print_char); if(p){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't print digest: %.200s", p); + "無法列印文摘:%.200s", p); break; } else if(print_msg_att(msgno, ap, next)) @@ -2172,14 +2172,14 @@ /*----- Can't display this type ------*/ if(a->body->encoding < ENCOTHER) q_status_message4(SM_ORDER | SM_DING, 3, 5, - "Don't know how to display %.200s%.200s%.200s attachments.%.200s", + "不知如何顯示 %.200s%.200s%.200s 的附件。%.200s", body_type_names(a->body->type), a->body->subtype ? "/" : "", a->body->subtype ? a->body->subtype :"", - (flags & DA_SAVE) ? " Try Save." : ""); + (flags & DA_SAVE) ? "試試存檔。" : ""); else q_status_message1(SM_ORDER | SM_DING, 3, 5, - "Don't know how to unpack \"%.200s\" encoding", + "不知如何解開 \"%.200s\" 的編碼", body_encodings[(a->body->encoding <= ENCMAX) ? a->body->encoding : ENCOTHER]); @@ -2192,12 +2192,12 @@ display_digest_att(msgno, a, flags); else q_status_message1(SM_ORDER, 3, 5, - "Can't display Multipart/%.200s", + "無法顯示 Multipart/%.200s", a->body->subtype); } else q_status_message(SM_ORDER, 3, 5, - "Can't display unknown Multipart Subtype"); + "無法顯示未知的 Multipart Subtype"); } else if(MIME_VCARD_A(a)) display_vcard_att(msgno, a, flags); @@ -2212,7 +2212,7 @@ if(F_OFF(F_QUELL_ATTACH_EXTRA_PROMPT, ps_global) && (!(flags & DA_DIDPROMPT))) - if(want_to("View selected Attachment", 'y', + if(want_to("檢視選擇的附件", 'y', 0, NO_HELP, WT_NORM) == 'n'){ cmd_cancelled(NULL); return(1); @@ -2307,7 +2307,7 @@ if((store = so_get(FileStar, filename, WRITE_ACCESS|OWNER_ONLY)) == NULL){ q_status_message2(SM_ORDER | SM_DING, 3, 5, - "Error \"%.200s\", Can't write file %.200s", + "錯誤 \"%.200s\",無法寫入檔案 %.200s", error_description(errno), filename); if(filename){ (void)unlink(filename); @@ -2357,7 +2357,7 @@ if(err){ q_status_message2(SM_ORDER | SM_DING, 3, 5, - "%.200s: Error saving image to temp file %.200s", + "%.200s:無法將圖形存入暫存檔 %.200s", err, filename); if(filename){ (void)unlink(filename); @@ -2410,7 +2410,7 @@ if(we_cancel) cancel_busy_alarm(-1); - q_status_message1(SM_ORDER, 3, 4, "Cannot display %.200s attachment", + q_status_message1(SM_ORDER, 3, 4, "無法顯示形態為 %.200s 之附件", type_desc(body->type, body->subtype, body->parameter, 1)); } @@ -2473,13 +2473,13 @@ clear_index_cache_ent(msgno); if(store = format_text_att(msgno, a, &handles)){ - scroll_attachment("ATTACHED TEXT", store, CharStar, handles, a, flags); + scroll_attachment("附件文字", store, CharStar, handles, a, flags); free_handles(&handles); so_give(&store); /* free resources associated with store */ } else q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for attachment."); + "配置附件空間時發生錯誤。"); } @@ -2510,7 +2510,7 @@ /* initialize a storage object */ if(!(store = so_get(CharStar, NULL, EDIT_ACCESS))){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for message."); + "配置空間給信件時發生錯誤。"); return; } @@ -2519,11 +2519,11 @@ if(format_msg_att(msgno, &ap, pc, FM_DISPLAY)){ if(ps_global->full_header == 2) q_status_message(SM_INFO, 0, 3, - "Full header mode ON. All header text being included"); + "完整標頭模式開啟。所有的標頭文字都包含在內"); scroll_attachment((a->body->subtype && !strucmp(a->body->subtype, "delivery-status")) - ? "DELIVERY STATUS REPORT" : "ATTACHED MESSAGE", + ? "傳送狀態報告" : "附加的信件", store, CharStar, NULL, a, flags); } @@ -2571,7 +2571,7 @@ if(!(store = so_get(src, NULL, EDIT_ACCESS))){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for message."); + "配置空間給信件時發生錯誤。"); return; } @@ -2598,7 +2598,7 @@ ps_global->ttyo->screen_cols, pc)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't format digest: %.200s", errstr); + "無法格式化文摘:%.200s", errstr); bad_news++; } else if(!gf_puts(NEWLINE, pc)) @@ -2608,7 +2608,7 @@ if(errstr = part_desc(ap->number, ap->body->nested.msg->body, 0, ps_global->ttyo->screen_cols, pc)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't format digest: %.200s", errstr); + "無法格式化文摘:%.200s", errstr); bad_news++; } else if(format_msg_att(msgno, &ap, pc, FM_DISPLAY)) @@ -2625,9 +2625,9 @@ if(!bad_news){ if(ps_global->full_header == 2) q_status_message(SM_INFO, 0, 3, - "Full header mode ON. All header text being included"); + "完整標頭模式開啟。所有的標頭文字都包含在內"); - scroll_attachment("ATTACHED MESSAGES", store, src, NULL, a, flags); + scroll_attachment("附加的信件", store, src, NULL, a, flags); } gf_clear_so_writec(store); @@ -2649,22 +2649,22 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = src; - sargs.text.desc = "attachment"; + sargs.text.desc = "附件"; sargs.text.handles = handles; sargs.bar.title = title; sargs.proc.tool = process_attachment_cmd; sargs.proc.data.p = (void *) a; sargs.help.text = h_mail_text_att_view; - sargs.help.title = "HELP FOR ATTACHED TEXT VIEW"; + sargs.help.title = "檢視附件文字的輔助說明"; sargs.keys.menu = &att_view_keymenu; setbitmap(sargs.keys.bitmap); /* First, fix up "back" key */ if(flags & DA_FROM_VIEW){ - att_view_keymenu.keys[ATV_BACK_KEY].label = "MsgText"; + att_view_keymenu.keys[ATV_BACK_KEY].label = "信件文字"; } else{ - att_view_keymenu.keys[ATV_BACK_KEY].label = "AttchIndex"; + att_view_keymenu.keys[ATV_BACK_KEY].label = "附件索引"; } if(!handles){ @@ -2752,7 +2752,7 @@ case MC_UNDELETE : if(undelete_attachment(rawno, sparms->proc.data.p, &n)) q_status_message1(SM_ORDER, 0, 3, - "Part %.200s UNdeleted", AD(sparms)->number); + "第 %.200s 部份已被反刪除", AD(sparms)->number); break; @@ -2866,14 +2866,14 @@ msgno, a->body, a->number); if(!lines){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error accessing attachment."); + "存取附件時發生錯誤"); return; } if(!(in_store = so_get(CharStar, NULL, EDIT_ACCESS))){ free_list_array(&lines); q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for attachment."); + "配置空間給附件時發生錯誤。"); return; } @@ -2958,7 +2958,7 @@ if(errstr) q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Can't format entry : %.200s", errstr); + "無法格式化項目:%.200s", errstr); so_give(&in_store); } @@ -2994,7 +2994,7 @@ if(!(store = so_get(CharStar, NULL, EDIT_ACCESS))){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for message."); + "配置空間給信件時發生錯誤。"); return; } @@ -3102,9 +3102,9 @@ sargs.text.text = so_text(store); sargs.text.src = CharStar; sargs.text.desc = "attachment info"; - sargs.bar.title = "ABOUT ATTACHMENT"; + sargs.bar.title = "附件資訊"; sargs.help.text = h_simple_text_view; - sargs.help.title = "HELP FOR \"ABOUT ATTACHMENT\""; + sargs.help.title = "\"關於附件\"的輔助說明"; sargs.use_indexline_color = 1; @@ -3155,7 +3155,7 @@ role = combine_inherited_role(role); else{ role = NULL; - cmd_cancelled("Forward"); + cmd_cancelled("轉寄"); mail_free_envelope(&outgoing); return; } @@ -3163,7 +3163,7 @@ if(role) q_status_message1(SM_ORDER, 3, 4, - "Forwarding using role \"%.200s\"", role->nick); + "正以 \"%.200s\" 的身份轉寄", role->nick); /* * as with all text bound for the composer, build it in @@ -3217,7 +3217,7 @@ if(fetch_contents(stream, msgno, a->number, &body->nested.part->next->body)){ - pine_send(outgoing, &body, "FORWARD MESSAGE", + pine_send(outgoing, &body, "轉寄信件", role, NULL, NULL, redraft_pos, NULL, NULL, FALSE); ps_global->mangled_screen = 1; @@ -3235,12 +3235,12 @@ so_give((STORE_S **) &msgtext); free_redraft_pos(&redraft_pos); q_status_message(SM_ORDER | SM_DING, 4, 5, - "Error fetching message contents. Can't forward message."); + "取得信件內容時發生錯誤。無法轉寄信件。"); } } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Error allocating message text"); + "無法配置信件文字"); mail_free_envelope(&outgoing); free_action(&role); @@ -3283,7 +3283,7 @@ ret = 'n'; if(ps_global->full_header == 2) - ret = want_to("Forward message as an attachment", 'n', 0, + ret = want_to("將信件以附件的形式轉寄", 'n', 0, NO_HELP, WT_SEQ_SENSITIVE); /* Setup possible role */ if(nonempty_patterns(rflags, &dummy)){ @@ -3292,7 +3292,7 @@ role = combine_inherited_role(role); else{ /* cancel reply */ role = NULL; - cmd_cancelled("Forward"); + cmd_cancelled("轉寄"); mail_free_envelope(&outgoing); so_give((STORE_S **) &msgtext); return; @@ -3301,7 +3301,7 @@ if(role) q_status_message1(SM_ORDER, 3, 4, - "Forwarding using role \"%.200s\"", role->nick); + "正以 \"%.200s\" 的身份轉寄", role->nick); if(role && role->template){ char *filtered; @@ -3389,7 +3389,7 @@ if(body){ pine_send(outgoing, &body, - "FORWARD MESSAGE", + "轉寄信件", role, NULL, reply.flags ? &reply : NULL, redraft_pos, NULL, NULL, FALSE); @@ -3408,16 +3408,16 @@ else{ so_give((STORE_S **) &msgtext); q_status_message(SM_ORDER | SM_DING, 4, 5, - "Error fetching message contents. Can't forward message."); + "取得信件內容時發生錯誤。無法轉寄信件。"); } } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Error allocating message text"); + "無法配置信件文字"); } else q_status_message1(SM_ORDER,3,4, - "Error fetching message %.200s. Can't forward it.", + "取得信件 %.200s 的內容時發生錯誤。無法轉寄之。", long2string(msgno)); if(reply.orig_charset) @@ -3485,14 +3485,14 @@ role = combine_inherited_role(role); else{ /* cancel reply */ role = NULL; - cmd_cancelled("Reply"); + cmd_cancelled("回覆"); goto seeyalater; } } if(role){ q_status_message1(SM_ORDER, 3, 4, - "Replying using role \"%.200s\"", role->nick); + "正以 \"%.200s\" 的身份回信", role->nick); /* override fcc gotten in reply_seed */ if(role->fcc){ @@ -3510,7 +3510,7 @@ if(!outgoing->to && !outgoing->cc && !outgoing->bcc && !outgoing->newsgroups) q_status_message(SM_ORDER | SM_DING, 3, 6, - "Warning: no valid addresses to reply to!"); + "警告:並無有效之地址可供回信!"); /* * Now fix up the body... @@ -3553,7 +3553,7 @@ msgtext, prefix, include_text, role, 1, &redraft_pos)){ /* partially formatted outgoing message */ - pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY", + pine_send(outgoing, &body, "編輯信件回函", role, fcc.tptr, &reply, redraft_pos, NULL, NULL, 0); pine_free_body(&body); @@ -3561,7 +3561,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Error building message body"); + "無法建立信件本體"); fs_give((void **) &tp); if(reply.orig_charset) @@ -3569,7 +3569,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Error allocating message text"); + "無法配置信件文字"); } seeyalater: @@ -3639,7 +3639,7 @@ sprintf(prompt, "Pipe %sattachment %.20s to %s: ", raw ? "RAW " : "", a->number, capture ? "" : "(Free Output) "); - pipe_opt[1].label = raw ? "DecodedData" : "Raw Data"; + pipe_opt[1].label = raw ? "解碼後的資料" : "原始資料"; pipe_opt[2].label = capture ? "Free Output" : "Capture Output"; flags = OE_APPEND_CURRENT | OE_SEQ_SENSITIVE; rc = optionally_enter(pipe_command, -FOOTER_ROWS(ps_global), 0, @@ -3658,7 +3658,7 @@ } else if(rc == 0){ if(pipe_command[0] == '\0'){ - cmd_cancelled("Pipe command"); + cmd_cancelled("導向命令"); break; } @@ -3736,7 +3736,7 @@ break; } else if(rc == 1){ - cmd_cancelled("Pipe"); + cmd_cancelled("導向"); break; } else if(rc == 3) @@ -3765,7 +3765,7 @@ rv = 1; } else - q_status_message1(SM_ORDER, 0, 3, "Part %.200s already deleted", + q_status_message1(SM_ORDER, 0, 3, "第 %.200s 部份已被刪除", a->number); return(rv); @@ -3790,7 +3790,7 @@ rv = 1; } else - q_status_message1(SM_ORDER, 0, 3, "Part %.200s already UNdeleted", + q_status_message1(SM_ORDER, 0, 3, "第 %.200s 部份已被反刪除", a->number); return(rv); @@ -4391,19 +4391,19 @@ fclose(fp); } else - status = "Can't read result of display filter"; + status = "無法讀取顯示過濾器的結果"; } else - status = "Filter command returned error."; + status = "過濾器命令傳回錯誤。"; } else - status = "Can't open pipe for display filter"; + status = "無法開啟供顯示過濾器用的管線"; } unlink(tmpfile); } else - status = "Can't open display filter tmp file"; + status = "無法開啟顯示過濾器的暫存檔"; } else if(status = gf_filter(cmd, key ? filter_session_key() : NULL, input_so, output_pc, aux_filters, @@ -4721,7 +4721,7 @@ fs_give((void **)&tmpfile_name); } - frd->error = "Can't open temporary file"; + frd->error = "無法開啟暫存檔"; ps_global->intr_pending; } @@ -4740,7 +4740,7 @@ "fetch_readc_init: size mismatch: size=%lu read=%lu, continue...\n", frd->size, frd->read)); q_status_message(SM_ORDER | SM_DING, 0, 3, - "Message size does not match expected size, continuing..."); + "信件並不符合預期之大小,繼續動作..."); frd->size = min(size, frd->read); } @@ -5164,7 +5164,7 @@ "partial_body returned less than asked for: asked=%lu got=%lu, continue...\n", g_fr_desc->chunksize, g_fr_desc->read - save_read)); q_status_message(SM_ORDER | SM_DING, 0, 3, - "Message size does not match expected size, continuing..."); + "信件並不符合預期之大小,繼續動作..."); g_fr_desc->size = g_fr_desc->read; } @@ -5292,12 +5292,12 @@ display_digest_att(msgno, a, flags); else */ q_status_message1(SM_ORDER, 3, 5, - "Can't display Multipart/%.200s", + "無法顯示 Multipart/%.200s", a->body->subtype); } else q_status_message(SM_ORDER, 3, 5, - "Can't display unknown Multipart Subtype"); + "無法顯示未知的 Multipart Subtype"); } /* else if(MIME_VCARD_A(a)) display_vcard_att_window(msgno, a, flags);*/ @@ -5329,7 +5329,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for attachment."); + "配置附件空間時發生錯誤。"); } @@ -5366,6 +5366,6 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error allocating space for message."); + "配置信件空間時發生錯誤。"); } #endif --- pine/mailindx.c.orig Wed May 4 06:00:53 2005 +++ pine/mailindx.c Fri Oct 7 21:53:28 2005 @@ -55,10 +55,10 @@ /* * Some common Command Bindings */ -#define VIEWMSG_MENU {">", "[ViewMsg]", \ +#define VIEWMSG_MENU {">", "[檢視信件]", \ {MC_VIEW_TEXT, 5,{'v','.','>',ctrl('M'),ctrl('J')}}, \ KS_VIEW} -#define FLDRSORT_MENU {"$", "SortIndex", {MC_SORT,1,{'$'}}, KS_SORT} +#define FLDRSORT_MENU {"$", "排序索引", {MC_SORT,1,{'$'}}, KS_SORT} /* @@ -94,9 +94,9 @@ HELP_MENU, OTHER_MENU, {"X",NULL,{MC_EXPUNGE,1,{'x'}},KS_NONE}, - {"&","unXclude",{MC_UNEXCLUDE,1,{'&'}},KS_NONE}, - {";","Select",{MC_SELECT,1,{';'}},KS_SELECT}, - {"A","Apply",{MC_APPLY,1,{'a'}},KS_APPLY}, + {"&","取消排除(exclude)",{MC_UNEXCLUDE,1,{'&'}},KS_NONE}, + {";","選擇",{MC_SELECT,1,{';'}},KS_SELECT}, + {"A","套用",{MC_APPLY,1,{'a'}},KS_APPLY}, FLDRSORT_MENU, JUMP_MENU, HDRMODE_MENU, @@ -106,8 +106,8 @@ HELP_MENU, OTHER_MENU, - {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, - {"Z","ZoomMode",{MC_ZOOM,1,{'z'}},KS_ZOOM}, + {":","選擇",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, + {"Z","縮放模式",{MC_ZOOM,1,{'z'}},KS_ZOOM}, LISTFLD_MENU, RCOMPOSE_MENU, HOMEKEY_MENU, @@ -134,9 +134,9 @@ static struct key simple_index_keys[] = {HELP_MENU, - {"E","ExitSelect",{MC_EXIT,1,{'e'}},KS_EXITMODE}, + {"E","離開",{MC_EXIT,1,{'e'}},KS_EXITMODE}, NULL_MENU, - {"S","[Select]",{MC_SELECT,3,{'s',ctrl('M'),ctrl('J')}},KS_SELECT}, + {"S","[選擇]",{MC_SELECT,3,{'s',ctrl('M'),ctrl('J')}},KS_SELECT}, PREVMSG_MENU, NEXTMSG_MENU, PREVPAGE_MENU, @@ -151,11 +151,11 @@ static struct key thread_keys[] = {HELP_MENU, OTHER_MENU, - {"<", "FldrList", {MC_FOLDERS,2,{'<',','}}, KS_NONE}, - {">", "[ViewThd]", {MC_VIEW_ENTRY,5,{'v','.','>',ctrl('M'),ctrl('J')}}, + {"<", "信件匣列表", {MC_FOLDERS,2,{'<',','}}, KS_NONE}, + {">", "[檢視討論串]", {MC_VIEW_ENTRY,5,{'v','.','>',ctrl('M'),ctrl('J')}}, KS_VIEW}, - {"P", "PrevThd", {MC_PREVITEM, 1, {'p'}}, KS_PREVMSG}, - {"N", "NextThd", {MC_NEXTITEM, 1, {'n'}}, KS_NEXTMSG}, + {"P", "前一串列", {MC_PREVITEM, 1, {'p'}}, KS_PREVMSG}, + {"N", "次一串列", {MC_NEXTITEM, 1, {'n'}}, KS_NEXTMSG}, PREVPAGE_MENU, NEXTPAGE_MENU, DELETE_MENU, @@ -469,14 +469,14 @@ ? "THREAD INDEX" : (stream == ps_global->mail_stream) ? (style == MsgIndex || style == MultiMsgIndex) - ? "MESSAGE INDEX" - : "ZOOMED MESSAGE INDEX" + ? "信件索引" + : "縮放後的信件索引" : (!strcmp(folder, INTERRUPTED_MAIL)) - ? "COMPOSE: SELECT INTERRUPTED" + ? "編輯:選擇被中斷的" : (ps_global->VAR_FORM_FOLDER && !strcmp(ps_global->VAR_FORM_FOLDER, folder)) - ? "COMPOSE: SELECT FORM LETTER" - : "COMPOSE: SELECT POSTPONED", + ? "編輯:選擇樣版信件" + : "編輯:選擇被暫緩的", stream, cntxt, folder, msgmap, 1, (style == ThreadIndex) ? ThrdIndex : (THREADING() @@ -494,12 +494,12 @@ if(km == &index_keymenu){ if(THREADING() && sp_viewing_a_thread(stream)){ menu_init_binding(km, '<', MC_THRDINDX, "<", - "ThrdIndex", BACK_KEY); + "討論串列", BACK_KEY); menu_add_binding(km, ',', MC_THRDINDX); } else{ menu_init_binding(km, '<', MC_FOLDERS, "<", - "FldrList", BACK_KEY); + "信件匣列", BACK_KEY); menu_add_binding(km, ',', MC_FOLDERS); } if(F_OFF(F_ENABLE_PIPE,ps_global)) @@ -586,7 +586,7 @@ struct pine *state; { if(!state->mail_stream) { - q_status_message(SM_ORDER, 0, 3, "No folder is currently open"); + q_status_message(SM_ORDER, 0, 3, "目前尚無已開啟的信件匣"); state->prev_screen = mail_index_screen; state->next_screen = main_menu_screen; return; @@ -1017,7 +1017,7 @@ k = i; if(++j >= id.lines_per_page){ if((id.msg_at_top = i) == 1L) - q_status_message(SM_ORDER, 0, 1, "First Index page"); + q_status_message(SM_ORDER, 0, 1, "索引第一頁"); break; } @@ -1031,7 +1031,7 @@ 0L, FSF_SKIP_CHID))) q_status_message(SM_ORDER, 0, 1, - "Already at start of Index"); + "已經在索引的起頭了"); break; } @@ -1051,7 +1051,7 @@ k = i; if(++j >= id.lines_per_page){ if(i+id.lines_per_page > mn_get_total(msgmap)) - q_status_message(SM_ORDER, 0, 1, "Last Index page"); + q_status_message(SM_ORDER, 0, 1, "索引最終頁"); id.msg_at_top = i; break; @@ -1060,7 +1060,7 @@ if(i >= mn_get_total(msgmap)){ if(mn_get_cur(msgmap) == k) - q_status_message(SM_ORDER,0,1,"Already at end of Index"); + q_status_message(SM_ORDER,0,1,"已經在索引的結尾了"); break; } @@ -1089,7 +1089,7 @@ else cur_msg = (mn_get_total(msgmap) > 0L) ? 1L : 0L; mn_set_cur(msgmap, cur_msg); - q_status_message(SM_ORDER, 0, 3, "First Index Page"); + q_status_message(SM_ORDER, 0, 3, "索引第一頁"); } break; @@ -1110,7 +1110,7 @@ else cur_msg = mn_get_total(msgmap); mn_set_cur(msgmap, cur_msg); - q_status_message(SM_ORDER, 0, 3, "Last Index Page"); + q_status_message(SM_ORDER, 0, 3, "索引最終頁"); } break; @@ -1473,9 +1473,9 @@ } q_status_message2(SM_ORDER, 0, 1, - "Message %.200s %.200sdeleted", + "信件 %.200s %.200s刪除", long2string(mn_get_cur(msgmap)), - (del) ? "" : "already "); + (del) ? "" : "已 "); } break; @@ -1503,9 +1503,9 @@ } q_status_message2(SM_ORDER, 0, 1, - "Message %.200s %.200sdeleted", + "信件 %.200s %.200s刪除", long2string(mn_get_cur(msgmap)), - (del) ? "UN" : "NOT "); + (del) ? "已遭復原" : "未被"); } break; @@ -3193,7 +3193,7 @@ "parse_index_format: unrecognized token: %s\n", q ? q : "?")); q_status_message1(SM_ORDER | SM_DING, 0, 3, - "Unrecognized string in index-format: %.200s", q); + "索引格式中出現無法辨識的字串:%.200s", q); continue; } @@ -3235,7 +3235,7 @@ if(!column){ dprint(1, (debugfile, "Completely unrecognizable index-format\n")); q_status_message(SM_ORDER | SM_DING, 0, 3, - "Configured \"index-format\" unrecognizable. Using default."); + "無法辨識已設定的 \"index-format\"。使用預設值。"); return(0); } @@ -4425,7 +4425,7 @@ || cdesc->ctype == iSubjKey || cdesc->ctype == iSubjKeyInit)) sprintf(str, "%-*.*s", width, width, - "[ No Message Text Available ]"); + "[ 無法取得信件 ]"); } else switch(cdesc->ctype){ @@ -7768,8 +7768,8 @@ static char search_string[MAX_SEARCH+1] = { '\0' }; HLINE_S *hl; static ESCKEY_S header_search_key[] = { {0, 0, NULL, NULL }, - {ctrl('Y'), 10, "^Y", "First Msg"}, - {ctrl('V'), 11, "^V", "Last Msg"}, + {ctrl('Y'), 10, "^Y", "第一封信"}, + {ctrl('V'), 11, "^V", "最後一封信"}, {-1, 0, NULL, NULL} }; dprint(4, (debugfile, "\n - search headers - \n")); @@ -7778,7 +7778,7 @@ return; } else if(mn_total_cur(msgmap) > 1L){ - q_status_message1(SM_ORDER, 0, 2, "%.200s msgs selected; Can't search", + q_status_message1(SM_ORDER, 0, 2, "已選擇 %.200s 封信件;無法搜尋", comatose(mn_total_cur(msgmap))); return; } @@ -7789,14 +7789,14 @@ new_string[0] = '\0'; while(1) { - sprintf(prompt, "Word to search for [%.*s] : ", sizeof(prompt)-50, + sprintf(prompt, "搜尋[%.*s] : ", sizeof(prompt)-50, search_string); if(F_ON(F_ENABLE_AGG_OPS, ps_global)){ header_search_key[0].ch = ctrl('X'); header_search_key[0].rval = 12; header_search_key[0].name = "^X"; - header_search_key[0].label = "Select Matches"; + header_search_key[0].label = "選取符合者"; } else{ header_search_key[0].ch = header_search_key[0].rval = 0; @@ -7815,7 +7815,7 @@ continue; } else if(rc == 10){ - q_status_message(SM_ORDER, 0, 3, "Searched to First Message."); + q_status_message(SM_ORDER, 0, 3, "搜尋至第一封信件。"); if(any_lflagged(msgmap, MN_HIDE | MN_CHID)){ do{ selected = sorted_msg; @@ -7831,7 +7831,7 @@ return; } else if(rc == 11){ - q_status_message(SM_ORDER, 0, 3, "Searched to Last Message."); + q_status_message(SM_ORDER, 0, 3, "搜尋至最後一封信件。"); if(any_lflagged(msgmap, MN_HIDE | MN_CHID)){ do{ selected = sorted_msg; @@ -7856,7 +7856,7 @@ } if(rc == 1 || (new_string[0] == '\0' && search_string[0] == '\0')) { - cmd_cancelled("Search"); + cmd_cancelled("搜尋"); return; } @@ -7900,8 +7900,8 @@ } if(ps_global->intr_pending){ - q_status_message1(SM_ORDER, 0, 3, "Search cancelled.%.200s", - select_all ? " Selected set may be incomplete.":""); + q_status_message1(SM_ORDER, 0, 3, "取消搜尋。%.200s", + select_all ? " 選取的集合可能不完整。":""); } else if(select_all){ if(selected @@ -7910,17 +7910,17 @@ && F_ON(F_AUTO_ZOOM, state)) (void) zoom_index(state, stream, msgmap); - q_status_message1(SM_ORDER, 0, 3, "%.200s messages found matching word", + q_status_message1(SM_ORDER, 0, 3, "共 %.200s 封信件找到符合的字串", long2string(selected)); } else if(selected){ - q_status_message1(SM_ORDER, 0, 3, "Word found%.200s", + q_status_message1(SM_ORDER, 0, 3, "字串已找到%.200s", (i <= sorted_msg) - ? ". Search wrapped to beginning" : ""); + ? "。從頭開始搜尋" : ""); mn_set_cur(msgmap, i); } else - q_status_message(SM_ORDER, 0, 3, "Word not found"); + q_status_message(SM_ORDER, 0, 3, "找不到字串"); #ifndef DOS intr_handling_off(); @@ -8174,7 +8174,7 @@ #endif if(flags & SRT_VRB){ - sprintf(sort_msg, "Sorting \"%.*s\"", + sprintf(sort_msg, "正在排序 \"%.*s\"", sizeof(sort_msg)-20, strsquish(tmp_20k_buf + 500, ps_global->cur_folder, ps_global->ttyo->screen_cols - 20)); @@ -8339,9 +8339,9 @@ new_sort = current_sort; new_rev = current_rev; q_status_message2(SM_ORDER, 3, 3, - "Sort %.200s! Restored %.200s sort.", + "排序%.200s!回復至 %.200s 排序。", ps_global->intr_pending - ? "Canceled" : "Failed", + ? "已取消" : "失敗", sort_name(new_sort)); } @@ -10502,10 +10502,10 @@ && format_message(mn_m2raw(ps_global->msgmap, mn_get_cur(ps_global->msgmap)), env, body, NULL, FM_NEW_MESS, pc)){ - sprintf(title, "Folder %s -- Message %ld of %ld", + sprintf(title, "信件匣 %s -- %ld 封信件中的第 %ld 封", strsquish(tmp_20k_buf + 500, ps_global->cur_folder, 50), - mn_get_cur(ps_global->msgmap), - mn_get_total(ps_global->msgmap)); + mn_get_total(ps_global->msgmap), + mn_get_cur(ps_global->msgmap)); *text = so_text(so); *l = strlen((char *)so_text(so)); *style = GETTEXT_TEXT; @@ -10774,7 +10774,7 @@ if(any_lflagged(msgmap, MN_SLCT) == 0L){ (void) unzoom_index(ps_global, stream, msgmap); dprint(4, (debugfile, "\n\n ---- Exiting ZOOM mode ----\n")); - q_status_message(SM_ORDER,0,2, "Index Zoom Mode is now off"); + q_status_message(SM_ORDER,0,2, "縮放模式己關閉"); } /* if current is hidden, adjust */ @@ -10952,7 +10952,7 @@ } else q_status_message(SM_ORDER, 0, 1, - "No thread to collapse or expand on this line"); + "這一行沒有討論串可供摺疊或展開"); /* if current is hidden, adjust */ if(adjust_current) @@ -11002,14 +11002,14 @@ thrd->branch = save_branch; if(set_in_thread == in_thread) - q_status_message1(SM_ORDER, 0, 3, "Unselected %.200s messages in thread", + q_status_message1(SM_ORDER, 0, 3, "在討論串中已取消 %.200s 封信件之選取", comatose((long) in_thread)); else if(set_in_thread == 0) - q_status_message1(SM_ORDER, 0, 3, "Selected %.200s messages in thread", + q_status_message1(SM_ORDER, 0, 3, "在討論串中已選取 %.200s 封信件", comatose((long) in_thread)); else q_status_message1(SM_ORDER, 0, 3, - "Selected %.200s more messages in thread", + "在討論串中已選取另外 %.200s 封信件", comatose((long) (in_thread-set_in_thread))); } --- pine/mailcmd.c.orig Tue Sep 13 06:04:25 2005 +++ pine/mailcmd.c Fri Oct 7 21:53:28 2005 @@ -154,41 +154,41 @@ /* * List of Select options used by apply_* functions... */ -static char *sel_pmt1 = "ALTER message selection : "; +static char *sel_pmt1 = "更改信件的選擇:"; ESCKEY_S sel_opts1[] = { - {'a', 'a', "A", "unselect All"}, + {'a', 'a', "A", "取消所有選擇"}, {'c', 'c', "C", NULL}, - {'b', 'b', "B", "Broaden selctn"}, - {'n', 'n', "N", "Narrow selctn"}, - {'f', 'f', "F", "Flip selected"}, + {'b', 'b', "B", "擴大選擇"}, + {'n', 'n', "N", "縮小選擇"}, + {'f', 'f', "F", "切換選擇"}, {-1, 0, NULL, NULL} }; -char *sel_pmt2 = "SELECT criteria : "; +char *sel_pmt2 = "選擇標準:"; static ESCKEY_S sel_opts2[] = { - {'a', 'a', "A", "select All"}, - {'c', 'c', "C", "select Cur"}, - {'n', 'n', "N", "Number"}, - {'d', 'd', "D", "Date"}, - {'t', 't', "T", "Text"}, - {'s', 's', "S", "Status"}, - {'z', 'z', "Z", "siZe"}, - {'k', 'k', "K", "Keyword"}, - {'r', 'r', "R", "Rule"}, + {'a', 'a', "A", "選擇所有"}, + {'c', 'c', "C", "選擇目前的"}, + {'n', 'n', "N", "數目"}, + {'d', 'd', "D", "日期"}, + {'t', 't', "T", "文字"}, + {'s', 's', "S", "狀態"}, + {'z', 'z', "Z", "大小"}, + {'k', 'k', "K", "關鍵字"}, + {'r', 'r', "R", "規則"}, {-1, 0, NULL, NULL} }; static ESCKEY_S sel_opts3[] = { - {'d', 'd', "D", "Del"}, - {'u', 'u', "U", "Undel"}, - {'r', 'r', "R", "Reply"}, - {'f', 'f', "F", "Forward"}, - {'%', '%', "%", "Print"}, - {'t', 't', "T", "TakeAddr"}, - {'s', 's', "S", "Save"}, - {'e', 'e', "E", "Export"}, + {'d', 'd', "D", "刪除"}, + {'u', 'u', "U", "復原刪除"}, + {'r', 'r', "R", "回覆"}, + {'f', 'f', "F", "轉寄"}, + {'%', '%', "%", "列印"}, + {'t', 't', "T", "地址簿"}, + {'s', 's', "S", "存檔"}, + {'e', 'e', "E", "匯出"}, { -1, 0, NULL, NULL}, { -1, 0, NULL, NULL}, { -1, 0, NULL, NULL}, @@ -199,15 +199,15 @@ }; static ESCKEY_S sel_opts4[] = { - {'a', 'a', "A", "select All"}, - {'c', 'c', "C", "select Curthrd"}, - {'n', 'n', "N", "Number"}, - {'d', 'd', "D", "Date"}, - {'t', 't', "T", "Text"}, - {'s', 's', "S", "Status"}, - {'z', 'z', "Z", "siZe"}, - {'k', 'k', "K", "Keyword"}, - {'r', 'r', "R", "Rule"}, + {'a', 'a', "A", "選擇所有"}, + {'c', 'c', "C", "選擇目前的討論串"}, + {'n', 'n', "N", "編號"}, + {'d', 'd', "D", "日期"}, + {'t', 't', "T", "文字"}, + {'s', 's', "S", "狀態"}, + {'z', 'z', "Z", "大小"}, + {'k', 'k', "K", "關鍵字"}, + {'r', 'r', "R", "規則"}, {-1, 0, NULL, NULL} }; @@ -223,30 +223,30 @@ static char *sel_flag = - "Select New, Deleted, Answered, or Important messages ? "; + "選擇 新的,已刪除的,已回覆的,或重要的信件?"; static char *sel_flag_not = - "Select NOT New, NOT Deleted, NOT Answered or NOT Important msgs ? "; + "選擇 舊的,尚未刪除的,尚未回覆的,或不重要的信件?"; static ESCKEY_S sel_flag_opt[] = { - {'n', 'n', "N", "New"}, - {'*', '*', "*", "Important"}, - {'d', 'd', "D", "Deleted"}, - {'a', 'a', "A", "Answered"}, - {'!', '!', "!", "Not"}, + {'n', 'n', "N", "新的"}, + {'*', '*', "*", "重要的"}, + {'d', 'd', "D", "已刪除的"}, + {'a', 'a', "A", "已回覆的"}, + {'!', '!', "!", "非"}, {-2, 0, NULL, NULL}, {-2, 0, NULL, NULL}, {-2, 0, NULL, NULL}, - {'r', 'r', "R", "Recent"}, - {'u', 'u', "U", "Unseen"}, + {'r', 'r', "R", "新進的"}, + {'u', 'u', "U", "尚未閱\讀的"}, {-1, 0, NULL, NULL} }; static ESCKEY_S sel_date_opt[] = { {0, 0, NULL, NULL}, - {ctrl('P'), 12, "^P", "Prev Day"}, - {ctrl('N'), 13, "^N", "Next Day"}, - {ctrl('X'), 11, "^X", "Cur Msg"}, - {ctrl('W'), 14, "^W", "Toggle When"}, + {ctrl('P'), 12, "^P", "前一天"}, + {ctrl('N'), 13, "^N", "後一天"}, + {ctrl('X'), 11, "^X", "目前的"}, + {ctrl('W'), 14, "^W", "切換何時"}, {KEY_UP, 12, "", ""}, {KEY_DOWN, 13, "", ""}, {-1, 0, NULL, NULL} @@ -254,41 +254,41 @@ static char *sel_text = - "Select based on To, From, Cc, Recip, Partic, Subject fields or All msg text ? "; + "選擇以 收件人,寄件人,副本,領受者,關係者,主題 等欄位為主,或所有的訊息文字?"; static char *sel_not_text = - "Select based on NOT To, From, Cc, Recip, Partic, Subject or All msg text ? "; + "選擇「不」以 收件人,寄件人,副本,領受者,關係者,主題 等欄位為主,或所有的訊息文字?"; static ESCKEY_S sel_text_opt[] = { - {'f', 'f', "F", "From"}, - {'s', 's', "S", "Subject"}, - {'t', 't', "T", "To"}, - {'a', 'a', "A", "All Text"}, - {'c', 'c', "C", "Cc"}, - {'!', '!', "!", "Not"}, - {'r', 'r', "R", "Recipient"}, - {'p', 'p', "P", "Participant"}, - {'b', 'b', "B", "Body"}, + {'f', 'f', "F", "寄件人"}, + {'s', 's', "S", "主題"}, + {'t', 't', "T", "收件人"}, + {'a', 'a', "A", "所有的訊息文字"}, + {'c', 'c', "C", "副本"}, + {'!', '!', "!", "非"}, + {'r', 'r', "R", "領受者"}, + {'p', 'p', "P", "關係者"}, + {'b', 'b', "B", "本體"}, {-1, 0, NULL, NULL} }; static ESCKEY_S choose_action[] = { - {'c', 'c', "C", "Compose"}, - {'r', 'r', "R", "Reply"}, - {'f', 'f', "F", "Forward"}, + {'c', 'c', "C", "編輯"}, + {'r', 'r', "R", "回覆"}, + {'f', 'f', "F", "轉寄"}, {'b', 'b', "B", "Bounce"}, {-1, 0, NULL, NULL} }; static char *select_num = - "Enter comma-delimited list of numbers (dash between ranges): "; + "輸入以逗點分隔的數字串列(範圍以破折號區分):"; static char *select_size_larger_msg = - "Select messages with size larger than: "; + "選擇長度大於此的信件:"; static char *select_size_smaller_msg = - "Select messages with size smaller than: "; + "選擇長度小於此的信件:"; -static char *sel_size_larger = "Larger"; -static char *sel_size_smaller = "Smaller"; +static char *sel_size_larger = "大一點"; +static char *sel_size_smaller = "小一點"; static ESCKEY_S sel_size_opt[] = { {0, 0, NULL, NULL}, {ctrl('W'), 14, "^W", NULL}, @@ -371,10 +371,10 @@ ? h_mail_view : h_mail_thread_index, (in_index == MsgIndx) - ? "HELP FOR MESSAGE INDEX" + ? "信件索引的輔助說明" : (in_index == View) - ? "HELP FOR MESSAGE VIEW" - : "HELP FOR THREAD INDEX", + ? "信件檢視的輔助說明" + : "討論串索引的輔助說明", HLPD_NONE); dprint(4, (debugfile,"MAIL_CMD: did help command\n")); state->mangled_screen = 1; @@ -394,7 +394,7 @@ /*------- View message text --------*/ case MC_VIEW_TEXT : view_text: - if(any_messages(msgmap, NULL, "to View")){ + if(any_messages(msgmap, NULL, "可供檢視")){ state->next_screen = mail_view_screen; #if defined(DOS) && !defined(WIN32) flush_index_cache(); /* save room on PC */ @@ -428,19 +428,19 @@ mn_dec_cur(stream, msgmap, MH_ANYTHD); if(i == mn_get_cur(msgmap)) q_status_message1(SM_ORDER, 0, 2, - "Already on first %.200s in Zoomed Index", - THRD_INDX() ? "thread" : "message"); + "已經到縮放索引中的第一封%.200s了", + THRD_INDX() ? "討論串" : "訊息"); else{ if(in_index == View || F_ON(F_NEXT_THRD_WO_CONFIRM, state)) ret = 'y'; else - ret = want_to("View previous thread", 'y', 'x', + ret = want_to("檢視前一討論串", 'y', 'x', NO_HELP, WT_NORM); if(ret == 'y'){ q_status_message(SM_ORDER, 0, 2, - "Viewing previous thread"); + "正檢視前一討論串"); new_msgno = mn_get_cur(msgmap); mn_set_cur(msgmap, i); unview_thread(state, stream, msgmap); @@ -470,13 +470,13 @@ } else q_status_message1(SM_ORDER, 0, 2, - "Already on first %.200s in Zoomed Index", - THRD_INDX() ? "thread" : "message"); + "已經到縮放索引中的第一封%.200s了", + THRD_INDX() ? "討論串" : "訊息"); } } else - q_status_message1(SM_ORDER, 0, 1, "Already on first %.200s", - THRD_INDX() ? "thread" : "message"); + q_status_message1(SM_ORDER, 0, 1, "已經到第一封%.200s", + THRD_INDX() ? "討論串" : "訊息"); } break; @@ -501,7 +501,7 @@ if(i == mn_get_cur(msgmap)){ if(any_lflagged(msgmap, MN_HIDE)) - any_messages(NULL, "more", "in Zoomed Index"); + any_messages(NULL, "更多的", "在可縮放索引中"); else goto nfolder; } @@ -510,12 +510,12 @@ || F_ON(F_NEXT_THRD_WO_CONFIRM, state)) ret = 'y'; else - ret = want_to("View next thread", 'y', 'x', + ret = want_to("檢視下一列討論串", 'y', 'x', NO_HELP, WT_NORM); if(ret == 'y'){ q_status_message(SM_ORDER, 0, 2, - "Viewing next thread"); + "正檢視下一列討論串"); new_msgno = mn_get_cur(msgmap); mn_set_cur(msgmap, i); unview_thread(state, stream, msgmap); @@ -548,10 +548,10 @@ && thrd->next && get_lflag(stream, NULL, thrd->rawno, MN_COLL)){ q_status_message(SM_ORDER, 0, 2, - "Expand collapsed thread to see more messages"); + "展開整個討論串以檢視更多的信件"); } else - any_messages(NULL, "more", "in Zoomed Index"); + any_messages(NULL, "更多的", "在可縮放索引中"); } } else{ @@ -566,14 +566,14 @@ nextfolder[sizeof(nextfolder)-1] = '\0'; if(next_folder(NULL, nextfolder, nextfolder, state->context_current, NULL, NULL)) - strncpy(prompt, ". Press TAB for next folder.", + strncpy(prompt, "。 以 TAB 鍵切換至下一信件匣。", sizeof(prompt)); else - strncpy(prompt, ". No more folders to TAB to.", + strncpy(prompt, "。 已無更多信件匣可供切換了。", sizeof(prompt)); } - any_messages(NULL, (mn_get_total(msgmap) > 0L) ? "more" : NULL, + any_messages(NULL, (mn_get_total(msgmap) > 0L) ? "更多的" : NULL, prompt[0] ? prompt : NULL); if(!IS_NEWS(stream) @@ -777,18 +777,18 @@ if(F_OFF(F_AUTO_OPEN_NEXT_UNREAD, state)){ static ESCKEY_S next_opt[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, - {TAB, 'n', "Tab", "NextNew"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, + {TAB, 'n', "Tab", "下一新的"}, {-1, 0, NULL, NULL} }; if(in_index) - sprintf(prompt, "View thread number %.10s? ", + sprintf(prompt, "檢視討論串 %10s? ", topthrd ? comatose(topthrd->thrdno) : "?"); else sprintf(prompt, - "View message in thread number %.10s? ", + "檢視信件在討論串 %.10s? ", topthrd ? comatose(topthrd->thrdno) : "?"); ret = radio_buttons(prompt, -FOOTER_ROWS(state), @@ -938,9 +938,9 @@ ? NULL : &did_cancel))){ if(!in_inbox){ static ESCKEY_S inbox_opt[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, - {TAB, 'z', "Tab", "To Inbox"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, + {TAB, 'z', "Tab", "至索引"}, {-1, 0, NULL, NULL} }; @@ -948,9 +948,9 @@ ret = 'y'; else{ sprintf(prompt, - "No more %ss. Return to \"%.*s\"? ", + "沒有更多的%s了。回到 \"%.*s\"?", (state->context_current->use&CNTXT_INCMNG) - ? "incoming folder" : "news group", + ? "收件匣" : "新聞組群", sizeof(prompt)-40, state->inbox_name); ret = radio_buttons(prompt, -FOOTER_ROWS(state), @@ -974,9 +974,9 @@ else if (did_cancel) cmd_cancelled(NULL); else - q_status_message1(SM_ORDER, 0, 2, "No more %.200ss", + q_status_message1(SM_ORDER, 0, 2, "沒有更多的%.200s了", (state->context_current->use&CNTXT_INCMNG) - ? "incoming folder" : "news group"); + ? "收件匣" : "新聞組群"); break; } @@ -991,15 +991,15 @@ * _(13 recent) or _(some recent) or nothing * ?_ */ - front = "View next"; + front = "檢視下一個"; strncpy(type, (state->context_current->use & CNTXT_INCMNG) - ? "Incoming folder" : "news group", + ? "收件匣" : "新聞組群", sizeof(type)); - sprintf(cnt, " (%.*s %.6s)", sizeof(cnt)-20, - recent_cnt ? long2string(recent_cnt) : "some", + sprintf(cnt, " (%.*s封新進)", sizeof(cnt)-20, + recent_cnt ? long2string(recent_cnt) : "幾", F_ON(F_TAB_USES_UNSEEN, ps_global) - ? "unseen" : "recent"); + ? "尚未讀取的幾" : "最近幾"); /* * Space reserved for radio_buttons call. @@ -1045,9 +1045,9 @@ */ if(F_OFF(F_AUTO_OPEN_NEXT_UNREAD, state)){ static ESCKEY_S next_opt[] = { - {'y', 'y', "Y", "Yes"}, - {'n', 'n', "N", "No"}, - {TAB, 'n', "Tab", "NextNew"}, + {'y', 'y', "Y", "是"}, + {'n', 'n', "N", "否"}, + {TAB, 'n', "Tab", "下一新的"}, {-1, 0, NULL, NULL} }; @@ -1079,7 +1079,7 @@ else any_messages(NULL, (mn_get_total(msgmap) > 0L) - ? IS_NEWS(stream) ? "more undeleted" : "more new" + ? IS_NEWS(stream) ? "更多遭復原刪除的" : "更多新的" : NULL, NULL); } @@ -1097,7 +1097,7 @@ * global "zoom mode" flag to suppress messags from the index * should suffice. */ - if(any_messages(msgmap, NULL, "to Zoom on")){ + if(any_messages(msgmap, NULL, "可供放大")){ if(unzoom_index(state, stream, msgmap)){ dprint(4, (debugfile, "\n\n ---- Exiting ZOOM mode ----\n")); q_status_message(SM_ORDER,0,2, "Index Zoom Mode is now off"); @@ -1114,10 +1114,10 @@ } else q_status_message(SM_ORDER, 0, 2, - "All messages selected, so not entering Index Zoom Mode"); + "所有的信件都被選取,因此不進入縮放索引模式"); } else - any_messages(NULL, "selected", "to Zoom on"); + any_messages(NULL, "被選中的", "可供放大"); } break; @@ -1125,7 +1125,7 @@ /*---------- print message on paper ----------*/ case MC_PRINTMSG : - if(any_messages(msgmap, NULL, "to print")) + if(any_messages(msgmap, NULL, "可供列印")) cmd_print(state, msgmap, 0, in_index); break; @@ -1134,7 +1134,7 @@ /*---------- Take Address ----------*/ case MC_TAKE : if(F_ON(F_ENABLE_ROLE_TAKE, state) || - any_messages(msgmap, NULL, "to Take address from")) + any_messages(msgmap, NULL, "可供取得地址")) cmd_take_addr(state, msgmap, 0); break; @@ -1142,7 +1142,7 @@ /*---------- Save Message ----------*/ case MC_SAVE : - if(any_messages(msgmap, NULL, "to Save")) + if(any_messages(msgmap, NULL, "可供存檔")) cmd_save(state, stream, msgmap, 0, in_index); break; @@ -1150,7 +1150,7 @@ /*---------- Export message ----------*/ case MC_EXPORT : - if(any_messages(msgmap, NULL, "to Export")){ + if(any_messages(msgmap, NULL, "可供匯出")){ cmd_export(state, msgmap, question_line, 0); state->mangled_footer = 1; } @@ -1164,9 +1164,9 @@ if(IS_NEWS(stream) && stream->rdonly){ if((del_count = count_flagged(stream, F_DEL)) > 0L){ state->mangled_footer = 1; - sprintf(prompt, "Exclude %ld message%s from %.*s", del_count, - plural(del_count), sizeof(prompt)-40, - pretty_fn(state->cur_folder)); + sprintf(prompt, "自 %.*s 中排除 %ld 封信件", + sizeof(prompt)-40, pretty_fn(state->cur_folder), + del_count); if(F_ON(F_FULL_AUTO_EXPUNGE, state) || (F_ON(F_AUTO_EXPUNGE, state) && (state->context_current @@ -1188,22 +1188,21 @@ state->mangled_body = 1; state->mangled_header = 1; - q_status_message2(SM_ORDER, 0, 4, - "%.200s message%.200s excluded", - long2string(del_count), - plural(del_count)); + q_status_message1(SM_ORDER, 0, 4, + "%.200s 封信件被排除了", + long2string(del_count)); } else - any_messages(NULL, NULL, "Excluded"); + any_messages(NULL, NULL, "排除在外"); } else - any_messages(NULL, "deleted", "to Exclude"); + any_messages(NULL, "被刪除", "可供排除"); break; } else if(READONLY_FOLDER(stream)){ q_status_message(SM_ORDER, 0, 4, - "Can't expunge. Folder is read-only"); + "無法刪除。信件匣是唯讀的"); break; } @@ -1212,9 +1211,8 @@ if(del_count = count_flagged(stream, F_DEL)){ int ret; - sprintf(prompt, "Expunge %ld message%s from %.*s", del_count, - plural(del_count), sizeof(prompt)-40, - pretty_fn(state->cur_folder)); + sprintf(prompt, "自 %.*s 中刪除 %ld 封信件", sizeof(prompt)-40, + pretty_fn(state->cur_folder), del_count); state->mangled_footer = 1; if(F_ON(F_FULL_AUTO_EXPUNGE, state) || (F_ON(F_AUTO_EXPUNGE, state) @@ -1225,7 +1223,7 @@ ret = 'y'; if(ret == 'x') - cmd_cancelled("Expunge"); + cmd_cancelled("刪除"); if(ret != 'y') break; @@ -1302,11 +1300,11 @@ else{ if(del_count) q_status_message1(SM_ORDER, 0, 3, - "No messages expunged from folder \"%.200s\"", + "沒有任何信件自信件匣 \"%.200s\" 中刪除", pretty_fn(state->cur_folder)); else q_status_message(SM_ORDER, 0, 3, - "No messages marked deleted. No messages expunged."); + "有任何信件被標示為刪除。沒有信件被刪除。"); } break; @@ -1339,8 +1337,8 @@ if(del_count > 0L){ state->mangled_footer = 1; - sprintf(prompt, "UNexclude %ld message%s in %.*s", del_count, - plural(del_count), sizeof(prompt)-40, + sprintf(prompt, "%ld 封信件在信件匣 %.*s 中被復原排除", + del_count, sizeof(prompt)-40, pretty_fn(state->cur_folder)); if(F_ON(F_FULL_AUTO_EXPUNGE, state) || (F_ON(F_AUTO_EXPUNGE, state) @@ -1375,29 +1373,28 @@ mn_set_cur(msgmap, mn_raw2m(msgmap,save_cur_rawno)); state->mangled_screen = 1; - q_status_message2(SM_ORDER, 0, 4, - "%.200s message%.200s UNexcluded", - long2string(del_count), - plural(del_count)); + q_status_message1(SM_ORDER, 0, 4, + "%.200s 封信件被復原排除", + long2string(del_count)); if(in_index != View) adjust_cur_to_visible(stream, msgmap); } else - any_messages(NULL, NULL, "UNexcluded"); + any_messages(NULL, NULL, "已復原排除"); } else - any_messages(NULL, "excluded", "to UNexclude"); + any_messages(NULL, "已被排除", "可供復原排除"); } else - any_messages(NULL, "excluded", "to UNexclude"); + any_messages(NULL, "已被排除", "可供復原排除"); break; /*------- Make Selection -----------*/ case MC_SELECT : - if(any_messages(msgmap, NULL, "to Select")){ + if(any_messages(msgmap, NULL, "可供選擇")){ aggregate_select(state, msgmap, question_line, in_index, THRD_INDX()); if((in_index == MsgIndx || in_index == ThrdIndx) @@ -1439,7 +1436,7 @@ unzoom_index(state, stream, msgmap); } else - any_messages(NULL, NULL, "to Apply command to. Try \"Select\""); + any_messages(NULL, NULL, "可供套用命令。試試 \"選擇\""); } break; @@ -1494,18 +1491,18 @@ switch(state->full_header){ case 0: q_status_message(SM_ORDER, 0, 3, - "Display of full headers is now off."); + "顯示完整標頭功\能目前為關閉。"); break; case 1: q_status_message1(SM_ORDER, 0, 3, - "Quotes displayed, use %.200s to see full headers", + "已顯示引言,以 %.200s 檢視完整標頭", F_ON(F_USE_FK, state) ? "F9" : "H"); break; case 2: q_status_message(SM_ORDER, 0, 3, - "Display of full headers is now on."); + "顯示完整標頭功\能目前為開啟。"); break; } @@ -1558,21 +1555,21 @@ { if(cmd == ctrl('Q') || cmd == ctrl('S')) q_status_message1(SM_ASYNC, 0, 2, - "%.200s char received. Set \"preserve-start-stop\" feature in Setup/Config.", + "收到 %.200s 字元。以 設定/環境設定 開啟 \"preserve-start-stop\"。", pretty_command(cmd)); else if(cmd == KEY_JUNK) q_status_message3(SM_ORDER, 0, 2, - "Invalid key pressed.%.200s%.200s%.200s", - (help) ? " Use " : "", + "輸入了無效的按鍵。%.200s%.200s%.200s", + (help) ? "請以 " : "", (help) ? help : "", - (help) ? " for help" : ""); + (help) ? " 呼叫輔助說明" : ""); else q_status_message4(SM_ORDER, 0, 2, - "Command \"%.200s\" not defined for this screen.%.200s%.200s%.200s", + "命令 \"%.200s\" 未在此畫面定義。%.200s%.200s%.200s", pretty_command(cmd), - (help) ? " Use " : "", + (help) ? "請以 " : "", (help) ? help : "", - (help) ? " for help" : ""); + (help) ? " 呼叫輔助說明。" : ""); } @@ -1846,12 +1843,12 @@ char *type, *cmd; { if(mn_get_total(map) <= 0L){ - q_status_message5(SM_ORDER, 0, 2, "No %.200s%.200s%.200s%.200s%.200s", + q_status_message5(SM_ORDER, 0, 2, "沒有%.200s%.200s%.200s%.200s%.200s", type ? type : "", type ? " " : "", - THRD_INDX() ? "threads" : "messages", + THRD_INDX() ? "討論串" : "信件", (!cmd || *cmd != '.') ? " " : "", - cmd ? cmd : "in folder"); + cmd ? cmd : "在信件匣中"); return(FALSE); } @@ -1879,8 +1876,8 @@ q_status_message2(SM_ORDER | (sp_dead_stream(state->mail_stream) ? SM_DING : 0), 0, 3, - "Can't %.200s message. Folder is %.200s.", cmd, - (sp_dead_stream(state->mail_stream)) ? "closed" : "read-only"); + "無法%.200s信件。信件匣是%.200s的。", cmd, + (sp_dead_stream(state->mail_stream)) ? "關閉" : "唯讀"); return(FALSE); } @@ -1900,7 +1897,7 @@ cmd_cancelled(cmd) char *cmd; { - q_status_message1(SM_INFO, 0, 2, "%.200s cancelled", cmd ? cmd : "Command"); + q_status_message1(SM_INFO, 0, 2, "取消%.200s", cmd ? cmd : "命令"); } @@ -1962,7 +1959,7 @@ dprint(4, (debugfile, "\n - delete message -\n")); if(!(any_messages(msgmap, NULL, "to Delete") - && can_set_flag(state, "delete", state->mail_stream->perm_deleted))) + && can_set_flag(state, "刪除", state->mail_stream->perm_deleted))) return; if(sp_io_error_on_stream(state->mail_stream)){ @@ -1972,8 +1969,8 @@ if(agg){ sequence = selected_sequence(state->mail_stream, msgmap, &del_count, 0); - sprintf(prompt, "%ld%s message%s marked for deletion", - del_count, (agg == 2) ? "" : " selected", plural(del_count)); + sprintf(prompt, "%ld 封%s信件被標示為待刪除", + del_count, (agg == 2) ? "" : "已選取的"); } else{ long rawno; @@ -1983,8 +1980,8 @@ del_count = 1L; /* return current */ sequence = cpystr(long2string(rawno)); lastmsg = (msgno >= mn_get_total(msgmap)); - sprintf(prompt, "%s%s marked for deletion", - lastmsg ? "Last message" : "Message ", + sprintf(prompt, "%s%s 被標示為待刪除", + lastmsg ? "最後一封信" : "信件 ", lastmsg ? "" : long2string(msgno)); } @@ -2017,8 +2014,8 @@ nextfolder[sizeof(nextfolder)-1] = '\0'; strncat(prompt, next_folder(NULL, nextfolder, nextfolder, state->context_current, NULL, NULL) - ? ". Press TAB for next folder." - : ". No more folders to TAB to.", + ? "。 以 TAB 鍵切換至下一信件匣。" + : "。 已無更多信件匣可供切換了。", sizeof(prompt)-1-strlen(prompt)); } } @@ -2166,7 +2163,7 @@ dprint(4, (debugfile, "\n - undelete -\n")); if(!(any_messages(msgmap, NULL, "to Undelete") - && can_set_flag(state, "undelete", state->mail_stream->perm_deleted))) + && can_set_flag(state, "復原刪除", state->mail_stream->perm_deleted))) return; if(agg){ @@ -2206,13 +2203,13 @@ update_titlebar_status(); q_status_message(SM_ORDER, 0, 3, wasdeleted - ? "Deletion mark removed, message won't be deleted" - : "Message not marked for deletion; no action taken"); + ? "已移除刪除標記,信件將不會遭刪除" + : "信件尚未被標示為刪除:沒有採取任何行動"); } else - q_status_message2(SM_ORDER, 0, 3, - "Deletion mark removed from %.200s message%.200s", - comatose(del_count), plural(del_count)); + q_status_message1(SM_ORDER, 0, 3, + "移除 %.200s 封信件上的刪除標記", + comatose(del_count)); if(sp_io_error_on_stream(state->mail_stream)){ sp_set_io_error_on_stream(state->mail_stream, 0); @@ -2277,7 +2274,7 @@ * eventually */ if(!(any_messages(msgmap, NULL, "to Flag") - && can_set_flag(state, "flag", 1))) + && can_set_flag(state, "標示", 1))) return; if(sp_io_error_on_stream(state->mail_stream)){ @@ -2934,9 +2931,9 @@ state->ugly_consider_advancing_bit = 0; if(F_OFF(F_SAVE_PARTIAL_WO_CONFIRM, state) && msgno_any_deletedparts(stream, msgmap) - && want_to("Saved copy will NOT include entire message! Continue", + && want_to("存下來的複本將「不」包含整封信件!繼續嗎", 'y', 'n', NO_HELP, WT_FLUSH_IN | WT_SEQ_SENSITIVE) != 'y'){ - cmd_cancelled("Save message"); + cmd_cancelled("信件存檔"); if(agg) restore_selected(msgmap); @@ -2950,7 +2947,7 @@ e = pine_mail_fetchstructure(stream, raw, NULL); if(!e) { q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't save message. Error accessing folder"); + "無法存入信件。存取信件匣時發生錯誤"); restore_selected(msgmap); return; } @@ -2997,7 +2994,7 @@ } sprintf(tmp_20k_buf, - "Message %.10s copied to \"%.99s\" in <%.99s>", + "信件 %.10s 已複製至 \"%.99s\" 於 <%.99s>", long2string(mn_get_cur(msgmap)), short_str(newfolder, (char *)(tmp_20k_buf+1000), lenfldr, MidDots), @@ -3228,32 +3225,32 @@ ekey[rc].ch = ctrl('T'); ekey[rc].rval = 2; ekey[rc].name = "^T"; - ekey[rc++].label = "To Fldrs"; + ekey[rc++].label = "信件匣列表"; if(saveable_count > 1){ ekey[rc].ch = ctrl('P'); ekey[rc].rval = 10; ekey[rc].name = "^P"; - ekey[rc++].label = "Prev Collection"; + ekey[rc++].label = "前一總集"; ekey[rc].ch = ctrl('N'); ekey[rc].rval = 11; ekey[rc].name = "^N"; - ekey[rc++].label = "Next Collection"; + ekey[rc++].label = "後一總集"; } if(F_ON(F_ENABLE_TAB_COMPLETE, ps_global)){ ekey[rc].ch = TAB; ekey[rc].rval = 12; ekey[rc].name = "TAB"; - ekey[rc++].label = "Complete"; + ekey[rc++].label = "完成"; } if(F_ON(F_ENABLE_SUB_LISTS, ps_global)){ ekey[rc].ch = ctrl('X'); ekey[rc].rval = 14; ekey[rc].name = "^X"; - ekey[rc++].label = "ListMatches"; + ekey[rc++].label = "列出符合"; } if(dela && (*dela == NoDel || *dela == Del)){ @@ -3427,7 +3424,7 @@ /* else fall thru like they cancelled */ case 1 : - cmd_cancelled("Save message"); + cmd_cancelled("信件存檔"); done--; break; @@ -5024,17 +5021,17 @@ } sprintf(tmp_20k_buf, - "Folder \"%.15s%s\" in <%.15s%s> doesn't exist. Create", + "信件匣 \"%.15s%s\" in <%.15s%s> 不存在。要建立", folder, (strlen(folder) > 15) ? "..." : "", context->nickname, (strlen(context->nickname) > 15) ? "..." : ""); } else - sprintf(tmp_20k_buf,"Folder \"%.40s%s\" doesn't exist. Create", + sprintf(tmp_20k_buf,"信件匣 \"%.40s%s\" 不存在。要建立", folder, strlen(folder) > 40 ? "..." : ""); if(want_to(tmp_20k_buf, 'y', 'n', NO_HELP, WT_SEQ_SENSITIVE) != 'y'){ - cmd_cancelled("Save message"); + cmd_cancelled("信件存檔"); return(-1); } @@ -5352,14 +5349,14 @@ export_opts[i = 0].ch = ctrl('T'); export_opts[i].rval = 10; export_opts[i].name = "^T"; - export_opts[i++].label = "To Files"; + export_opts[i++].label = "檔案列表"; #if !defined(DOS) && !defined(MAC) && !defined(OS2) if(ps_global->VAR_DOWNLOAD_CMD && ps_global->VAR_DOWNLOAD_CMD[0]){ export_opts[i].ch = ctrl('V'); export_opts[i].rval = 12; export_opts[i].name = "^V"; - export_opts[i++].label = "Downld Msg"; + export_opts[i++].label = "下載"; } #endif /* !(DOS || MAC) */ @@ -5367,7 +5364,7 @@ export_opts[i].ch = ctrl('I'); export_opts[i].rval = 11; export_opts[i].name = "TAB"; - export_opts[i++].label = "Complete"; + export_opts[i++].label = "完成"; } #if 0 @@ -5376,7 +5373,7 @@ export_opts[i].ch = ctrl('X'); export_opts[i].rval = 14; export_opts[i].name = "^X"; - export_opts[i++].label = "ListMatches"; + export_opts[i++].label = "列出符合"; } #endif @@ -5409,9 +5406,9 @@ filename[0] = '\0'; if(mn_total_cur(msgmap) <= 1L) - sprintf(nmsgs, "Msg #%ld", mn_get_cur(msgmap)); + sprintf(nmsgs, "信件 #%ld", mn_get_cur(msgmap)); else - sprintf(nmsgs, "%.10s messages", comatose(mn_total_cur(msgmap))); + sprintf(nmsgs, "%.10s 封信件", comatose(mn_total_cur(msgmap))); r = get_export_filename(state, filename, NULL, full_filename, sizeof(filename), nmsgs, "EXPORT", @@ -5420,12 +5417,12 @@ if(r < 0){ switch(r){ case -1: - cmd_cancelled("Export message"); + cmd_cancelled("匯出信件"); break; case -2: q_status_message1(SM_ORDER, 0, 2, - "Can't export to file outside of %.200s", + "無法輸出檔案至 %.200s 以外", VAR_OPER_DIR); break; } @@ -5442,7 +5439,7 @@ if(ps_global->restricted){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Download disallowed in restricted mode"); + "限制模式中不允許\下載"); goto fini; } @@ -5468,7 +5465,7 @@ || !format_message(mn_m2raw(msgmap, mn_get_cur(msgmap)), env, b, NULL, FM_NEW_MESS | FM_NOWRAP, pc)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - err = "Error writing tempfile for download"); + err = "寫入下載暫存檔時發生錯誤"); break; } } @@ -5485,12 +5482,12 @@ (void) close_system_pipe(&syspipe, NULL, 0); else q_status_message(SM_ORDER | SM_DING, 3, 3, - err = "Error running download command"); + err = "執行下載命令時發生錯誤"); } } else q_status_message(SM_ORDER | SM_DING, 3, 3, - err = "Error building temp file for download"); + err = "無法建立供下載使用的暫存檔"); if(tfp){ unlink(tfp); @@ -5498,7 +5495,7 @@ } if(!err) - q_status_message(SM_ORDER, 0, 3, "Download Command Completed"); + q_status_message(SM_ORDER, 0, 3, "下載命令已完成"); goto fini; } @@ -5527,7 +5524,7 @@ env = pine_mail_fetchstructure(state->mail_stream, mn_m2raw(msgmap, i), &b); if(!env) { - err = "Can't export message. Error accessing mail folder"; + err = "無法輸出信件。存取信件匣時發生錯誤"; failure = 1; break; } @@ -5734,20 +5731,20 @@ } } else if(mn_total_cur(msgmap) > 1L) - q_status_message4(SM_ORDER,0,3, - "%.200s message%.200s %.200s to file \"%.200s\"", - long2string(count), plural(count), + q_status_message3(SM_ORDER,0,3, + "%.200s 封信件已被%.200s至檔案 \"%.200s\"", + long2string(count), rflags & GER_OVER - ? "overwritten" - : rflags & GER_APPEND ? "appended" : "exported", + ? "覆寫" + : rflags & GER_APPEND ? "附加" : "匯出", filename); else q_status_message3(SM_ORDER,0,3, - "Message %.200s %.200s to file \"%.200s\"", + "信件 %.200s 已被%.200s至檔案 \"%.200s\"", long2string(mn_get_cur(msgmap)), rflags & GER_OVER - ? "overwritten" - : rflags & GER_APPEND ? "appended" : "exported", + ? "覆寫" + : rflags & GER_APPEND ? "附加" : "匯出", filename); } @@ -5782,7 +5779,7 @@ STORE_S *store = NULL; struct variable *vars = ps->vars; static ESCKEY_S simple_export_opts[] = { - {ctrl('T'), 10, "^T", "To Files"}, + {ctrl('T'), 10, "^T", "檔案列表"}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; @@ -5790,7 +5787,7 @@ simple_export_opts[r].ch = ctrl('I'); simple_export_opts[r].rval = 11; simple_export_opts[r].name = "TAB"; - simple_export_opts[r].label = "Complete"; + simple_export_opts[r].label = "完成"; } if(!srctext){ @@ -5870,12 +5867,12 @@ break; case -1: - cmd_cancelled("Export"); + cmd_cancelled("匯出"); break; case -2: q_status_message1(SM_ORDER, 0, 2, - "Can't export to file outside of %.200s", VAR_OPER_DIR); + "無法將檔案輸出至 %.200s 以外", VAR_OPER_DIR); break; } @@ -6025,9 +6022,9 @@ int l1, l2, l3, l4, l5, needed; char *p, p1[100], p2[100], *p3, p4[100], p5[100]; - sprintf(p1, "%.10sCopy ", - (flags & GE_IS_EXPORT) ? "EXPORT: " : - (flags & GE_IS_IMPORT) ? "IMPORT: " : "SAVE: "); + sprintf(p1, "%.10s複製 ", + (flags & GE_IS_EXPORT) ? "輸出:" : + (flags & GE_IS_IMPORT) ? "匯入:" : "存檔:"); l1 = strlen(p1); strncpy(p2, prompt_msg ? prompt_msg : "", sizeof(p2)-1); @@ -6035,18 +6032,18 @@ l2 = strlen(p2); if(rflags && *rflags & GER_ALLPARTS) - p3 = " (and atts)"; + p3 = " (與附件)"; else p3 = ""; l3 = strlen(p3); - sprintf(p4, " %.10s file%.10s%.30s", - (flags & GE_IS_IMPORT) ? "from" : "to", - is_absolute_path(filename) ? "" : " in ", + sprintf(p4, " %.10s檔案%.10s%.30s", + (flags & GE_IS_IMPORT) ? "自" : "至", + is_absolute_path(filename) ? "" : "於", is_absolute_path(filename) ? "" : - (!dir[0] ? "current directory" - : (dir[0] == '~' && !dir[1]) ? "home directory" + (!dir[0] ? "目前的目錄" + : (dir[0] == '~' && !dir[1]) ? "家目錄" : short_str(dir,dirb,30,FrontDots))); l4 = strlen(p4); @@ -6057,12 +6054,12 @@ l5 = strlen(p5); if((needed = l1+l2+l3+l4+l5-avail) > 0){ - sprintf(p4, " %.10s file%.10s%.30s", - (flags & GE_IS_IMPORT) ? "from" : "to", - is_absolute_path(filename) ? "" : " in ", + sprintf(p4, " %.10s檔案%.10s%.30s", + (flags & GE_IS_IMPORT) ? "自" : "至", + is_absolute_path(filename) ? "" : "於", is_absolute_path(filename) ? "" : - (!dir[0] ? "current dir" - : (dir[0] == '~' && !dir[1]) ? "home dir" + (!dir[0] ? "目前的目錄" + : (dir[0] == '~' && !dir[1]) ? "家目錄" : short_str(dir,dirb,10, FrontDots))); l4 = strlen(p4); } @@ -6456,8 +6453,8 @@ if(!can_access(full_filename, ACCESS_EXISTS)){ int rbflags; static ESCKEY_S access_opts[] = { - {'o', 'o', "O", "Overwrite"}, - {'a', 'a', "A", "Append"}, + {'o', 'o', "O", "覆蓋\"}, + {'a', 'a', "A", "附加"}, {-1, 0, NULL, NULL}}; rbflags = RB_NORM | ((flags & GE_SEQ_SENSITIVE) ? RB_SEQ_SENSITIVE : 0); @@ -6465,7 +6462,7 @@ if(flags & GE_NO_APPEND){ r = strlen(filename); sprintf(prompt_buf, - "File \"%s%.*s\" already exists. Overwrite it ", + "檔案 \"%s%.*s\" 已經存在。要覆蓋\它或附加於其後?", (r > 20) ? "..." : "", sizeof(prompt_buf)-100, filename + ((r > 20) ? r - 20 : 0)); @@ -6475,7 +6472,7 @@ if(unlink(full_filename) < 0){ q_status_message2(SM_ORDER | SM_DING, 3, 5, - "Cannot remove old %.200s: %.200s", + "無法移除舊有的 %.200s: %.200s", full_filename, error_description(errno)); } } @@ -6487,7 +6484,7 @@ else if(!(flags & GE_IS_IMPORT)){ r = strlen(filename); sprintf(prompt_buf, - "File \"%s%.*s\" already exists. Overwrite or append it ? ", + "檔案 \"%s%.*s\" 已經存在。要覆蓋\它或附加於其後?", (r > 20) ? "..." : "", sizeof(prompt_buf)-100, filename + ((r > 20) ? r - 20 : 0)); @@ -6500,7 +6497,7 @@ if(truncate(full_filename, (off_t)0) < 0) /* trouble truncating, but we'll give it a try anyway */ q_status_message2(SM_ORDER | SM_DING, 3, 5, - "Warning: Cannot truncate old %.200s: %.200s", + "警告:無法縮減舊有的 %.200s: %.200s", full_filename, error_description(errno)); break; @@ -7003,32 +7000,32 @@ ekey[rc].ch = (allow_list) ? ctrl('T') : 0 ; ekey[rc].rval = (allow_list) ? 2 : 0; ekey[rc].name = (allow_list) ? "^T" : ""; - ekey[rc++].label = (allow_list) ? "ToFldrs" : ""; + ekey[rc++].label = (allow_list) ? "檔案列表" : ""; if(ps_global->context_list->next){ ekey[rc].ch = ctrl('P'); ekey[rc].rval = 10; ekey[rc].name = "^P"; - ekey[rc++].label = "Prev Collection"; + ekey[rc++].label = "前一總集"; ekey[rc].ch = ctrl('N'); ekey[rc].rval = 11; ekey[rc].name = "^N"; - ekey[rc++].label = "Next Collection"; + ekey[rc++].label = "後一總集"; } if(F_ON(F_ENABLE_TAB_COMPLETE,ps_global)){ ekey[rc].ch = TAB; ekey[rc].rval = 12; ekey[rc].name = "TAB"; - ekey[rc++].label = "Complete"; + ekey[rc++].label = "完成"; } if(F_ON(F_ENABLE_SUB_LISTS, ps_global)){ ekey[rc].ch = ctrl('X'); ekey[rc].rval = 14; ekey[rc].name = "^X"; - ekey[rc++].label = "ListMatches"; + ekey[rc++].label = "列出符合"; } if(ps_global->context_list->next){ @@ -7167,19 +7164,19 @@ if(exists == FEX_ERROR) q_status_message1(SM_ORDER, 0, 3, - "Problem accessing folder \"%.200s\"", + "存取信件匣 \"%.200s\" 時發生問題", newfolder); else if(tc->use & CNTXT_INCMNG) q_status_message1(SM_ORDER, 0, 3, - "Can't find Incoming Folder: %.200s", + "找不到新進信件匣:%.200s", newfolder); else if(context_isambig(newfolder)) q_status_message3(SM_ORDER, 0, 3, - "Can't find folder \"%.200s\" in %.*s", - newfolder, (void *) 50, tc->nickname); + "在 %.*s 中找不到信件匣 \"%.200s\"", + (void *) 50, tc->nickname, newfolder); else q_status_message1(SM_ORDER, 0, 3, - "Can't find folder \"%.200s\"", + "找不到信件匣 \"%.200s\"", newfolder); return(NULL); @@ -7193,7 +7190,7 @@ /* fall thru like they cancelled */ case 1 : /* o_e says user cancel */ - cmd_cancelled("Open folder"); + cmd_cancelled("開啟信件匣"); return(NULL); case 2 : /* o_e says user wants list */ @@ -7575,7 +7572,7 @@ && (folder_index(newfolder, new_context, FI_FOLDER) < 0) && !is_absolute_path(newfolder)){ q_status_message1(SM_ORDER, 3, 4, - "Can't find Incoming Folder %.200s.", newfolder); + "找不到新進信件匣 %.200s.", newfolder); if(stream) pine_mail_close(stream); @@ -7697,11 +7694,10 @@ clear_index_cache(); /* MUST sort before restoring msgno! */ refresh_sort(ps_global->mail_stream, ps_global->msgmap, SRT_NON); - q_status_message3(SM_ORDER, 0, 3, - "Opened folder \"%.200s\" with %.200s message%.200s", + q_status_message2(SM_ORDER, 0, 3, + "信件匣 \"%.200s\" 已開啟,共 %s 封信件", ps_global->inbox_name, - long2string(mn_get_total(ps_global->msgmap)), - plural(mn_get_total(ps_global->msgmap))); + long2string(mn_get_total(ps_global->msgmap))); #ifdef _WINDOWS mswin_settitle(ps_global->inbox_name); #endif @@ -7784,7 +7780,7 @@ ps_global->mail_stream = NULL; } - sprintf(status_msg, "%.3sOpening \"", do_reopen ? "Re-" : ""); + sprintf(status_msg, "正在%.3s開啟 \"", do_reopen ? "重新" : ""); strncat(status_msg, pretty_fn(newfolder), sizeof(status_msg)-strlen(status_msg) - 2); status_msg[sizeof(status_msg)-2] = '\0'; @@ -7893,7 +7889,7 @@ } q_status_message1(SM_ORDER, 0, 3, - "Folder \"%.200s\" reopened", old_folder); + "重新開啟資料匣 \"%.200s\"", old_folder); } } @@ -8021,18 +8017,17 @@ if(!sp_flagged(ps_global->mail_stream, SP_FILTERED)) process_filter_patterns(ps_global->mail_stream, ps_global->msgmap, 0L); - q_status_message6(SM_ORDER, 0, 4, - "%.20s \"%.200s\" opened with %.20s message%.20s%.20s%.20s", + q_status_message5(SM_ORDER, 0, 4, + "%.20s \"%.200s\" 已開啟,共 %.20s 封信%.200s%.20s", IS_NEWS(ps_global->mail_stream) - ? "News group" : "Folder", + ? "新聞組群" : "信件匣", pretty_fn(newfolder), comatose(mn_get_total(ps_global->msgmap)), - plural(mn_get_total(ps_global->msgmap)), (!open_inbox && sp_flagged(ps_global->mail_stream, SP_PERMLOCKED)) - ? " (StayOpen)" : "", + ? " (保持開啟)" : "", READONLY_FOLDER(ps_global->mail_stream) - ? " READONLY" : ""); + ? " 唯讀" : ""); #ifdef _WINDOWS mswin_settitle(pretty_fn(newfolder)); @@ -8445,9 +8440,9 @@ dprint(2, (debugfile, "expunge_and_close: \"%s\"%s\n", folder, no_close ? " (NO_CLOSE bit set)" : "")); if(final_msg) - strcpy(ing, "ed"); + strcpy(ing, "已"); else - strcpy(ing, "ing"); + strcpy(ing, "正"); buff1[0] = '\0'; buff2[0] = '\0'; @@ -8455,7 +8450,7 @@ if(!stream->rdonly){ if(!no_close){ - q_status_message1(SM_INFO, 0, 1, "Closing \"%.200s\"...", + q_status_message1(SM_INFO, 0, 1, "正在關閉 \"%.200s\"...", folder); flush_status_messages(1); @@ -8531,10 +8526,8 @@ } else{ sprintf(prompt_b, - "Expunge the %ld deleted message%s from \"%s\"", - delete_count, - delete_count == 1 ? "" : "s", - short_folder_name); + "自 \"%s\" 中刪除 %ld 封信件", short_folder_name, + delete_count); ret = want_to(prompt_b, 'y', 0, NO_HELP, WT_NORM); } @@ -8549,15 +8542,13 @@ filtered = any_lflagged(sp_msgmap(stream), MN_EXLD); sprintf(buff2, - "%s%s%s%.30s%s%s %s message%s and remov%s %s.", - no_close ? "" : "Clos", + "%s關閉%s%.30s%s%s %s 封並%s刪除 %s 封信件。", no_close ? "" : ing, no_close ? "" : " \"", no_close ? "" : pretty_fn(folder), no_close ? "" : "\". ", - final_msg ? "Kept" : "Keeping", + final_msg ? "已保留" : "正保留", comatose(stream->nmsgs - filtered - delete_count), - plural(stream->nmsgs - filtered - delete_count), ing, long2string(delete_count)); if(final_msg) @@ -8634,17 +8625,17 @@ if(!no_close){ if(stream->nmsgs){ sprintf(buff2, - "Clos%s folder \"%.*s\". %s%s%s message%s.", + "%s關閉信件匣 \"%.*s\"。%s%s%s 封信件。", ing, sizeof(buff2)-50, pretty_fn(folder), - final_msg ? "Kept" : "Keeping", - (stream->nmsgs == 1L) ? " single" : " all ", + final_msg ? "已保留" : "正保留", + (stream->nmsgs == 1L) ? " 一": "全部共 ", (stream->nmsgs > 1L) ? comatose(stream->nmsgs) : "", plural(stream->nmsgs)); } else{ - sprintf(buff2, "Clos%s empty folder \"%.*s\"", + sprintf(buff2, "%s關閉空的信件匣 \"%.*s\"", ing, sizeof(buff2)-50, pretty_fn(folder)); } @@ -8676,7 +8667,7 @@ q_status_message(SM_ORDER, F_ON(F_AUTO_READ_MSGS,ps_global) ? 0 : 3, 5, moved_msg); - sprintf(buff2, "Clos%s news group \"%.*s\"", + sprintf(buff2, "%s關閉新聞組群 \"%.*s\"", ing, sizeof(buff2)-50, pretty_fn(folder)); if(F_ON(F_NEWS_CATCHUP, ps_global)){ @@ -8693,10 +8684,10 @@ if(delete_count){ sprintf(prompt_b, - "Delete %s%ld message%s from \"%s\"", - (delete_count > 1L) ? "all " : "", - delete_count, plural(delete_count), - pretty_fn(folder)); + "自 \"%s\" 中刪除 %s%ld 封信件", + pretty_fn(folder), + (delete_count > 1L) ? "所有共計 " : "", + delete_count); if(want_to(prompt_b, 'y', 0, NO_HELP, WT_NORM) == 'y'){ char seq[64]; @@ -8713,7 +8704,7 @@ } else sprintf(buff2, - "Clos%s read-only folder \"%.*s\". No changes to save", + "%s關閉唯讀的信件匣 \"%.*s\"。存入任何改變", ing, sizeof(buff2)-60, pretty_fn(folder)); if(final_msg) @@ -9799,14 +9790,14 @@ buf[0] = '\0'; width = max(10, ps_global->ttyo ? ps_global->ttyo->screen_cols : 80); - sprintf(buf, "%.30s%.2sMoving %.10s filtered message%.2s to \"\"", + sprintf(buf, "%.30s%.2s 正將 %.10s 封過濾後的信件移至 \"\"", nick ? nick : "", nick ? ": " : "", - comatose(mn_total_cur(msgmap)), plural(mn_total_cur(msgmap))); + comatose(mn_total_cur(msgmap))); /* 2 is for brackets, 5 is for " DONE" in busy alarm */ width -= (strlen(buf) + 2 + 5); - sprintf(buf, "%.30s%.2sMoving %.10s filtered message%.2s to \"%s\"", + sprintf(buf, "%.30s%.2s 正將 %.10s 封過濾後的信件移至 \"%s\"", nick ? nick : "", nick ? ": " : "", - comatose(mn_total_cur(msgmap)), plural(mn_total_cur(msgmap)), + comatose(mn_total_cur(msgmap)), short_str(dstfldr, sbuf, width, FrontDots)); dprint(5, (debugfile, "%s\n", buf)); @@ -9869,8 +9860,8 @@ ps_global->mangled_header = 1; } else{ - sprintf(buf, "Filtered all %s message%s to \"%.45s\"", - comatose(n), plural(n), dstfldr); + sprintf(buf, "過濾所有 %s 封信件至 \"%.45s\"", + comatose(n), dstfldr); dprint(5, (debugfile, "%s\n", buf)); } @@ -10174,8 +10165,8 @@ set_lflag(stream, msgmap, i, MN_SLCT, 1); pseudo_selected(msgmap); - sprintf(buf, "Moving %s read message%s to \"%.45s\"", - comatose(searched), plural(searched), dstfldr); + sprintf(buf, "將 %s 封以得取的信件移至 \"%.45s\"", + comatose(searched), dstfldr); we_cancel = busy_alarm(1, buf, NULL, 1); if(save(ps_global, stream, save_context, dstfldr, msgmap, SV_DELETE | SV_FIX_DELS) == searched) @@ -10204,7 +10195,7 @@ { char buf[MAX_SCREEN_COLS+1]; - sprintf(buf, "Save the %ld read message%s in \"%.*s\"", n, plural(n), + sprintf(buf, "將 %ld 封已讀取之信件存至 \"%.*s\"", n, sizeof(buf)-50, f); return(want_to(buf, 'y', 0, NO_HELP, WT_NORM) == 'y'); } @@ -10406,22 +10397,22 @@ char m[10]; int ans; static ESCKEY_S prt_opts[] = { - {'i', 'i', "I", "Index"}, + {'i', 'i', "I", "索引"}, {'m', 'm', "M", NULL}, {-1, 0, NULL, NULL}}; if(in_index == ThrdIndx){ - if(want_to("Print Index", 'y', 'x', NO_HELP, WT_NORM) == 'y') + if(want_to("列印索引", 'y', 'x', NO_HELP, WT_NORM) == 'y') ans = 'i'; else ans = 'x'; } else{ - sprintf(m, "Message%s", (msgs>1L) ? "s" : ""); + sprintf(m, "信件"); prt_opts[1].label = m; - sprintf(prompt, "Print %sFolder Index or %s %s? ", - (agg==2) ? "thread " : agg ? "selected " : "", - (agg==2) ? "thread" : agg ? "selected" : "current", m); + sprintf(prompt, "印出 %s信件匣索引或 %s %s?", + (agg==2) ? "討論串 " : agg ? "已被選擇的 " : "", + (agg==2) ? "討論串" : agg ? "已被選擇的" : "目前的", m); ans = radio_buttons(prompt, -FOOTER_ROWS(state), prt_opts, 'm', 'x', NO_HELP, RB_NORM|RB_SEQ_SENSITIVE, NULL); @@ -10429,7 +10420,7 @@ switch(ans){ case 'x' : - cmd_cancelled("Print"); + cmd_cancelled("列印"); if(agg) restore_selected(msgmap); @@ -10446,12 +10437,12 @@ } if(do_index) - sprintf(prompt, "%sFolder Index ", - (agg==2) ? "Thread " : agg ? "Selected " : ""); + sprintf(prompt, "%s件匣索引 ", + (agg==2) ? "討論串 " : agg ? "已被選擇的 " : ""); else if(msgs > 1L) - sprintf(prompt, "%s messages ", long2string(msgs)); + sprintf(prompt, "%s 封信件 ", long2string(msgs)); else - sprintf(prompt, "Message %s ", long2string(mn_get_cur(msgmap))); + sprintf(prompt, "第 %s 封信件", long2string(mn_get_cur(msgmap))); if(open_printer(prompt) < 0){ if(agg) @@ -10470,7 +10461,7 @@ /* then all the index members... */ if(!print_index(state, msgmap, agg)) q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error printing folder index"); + "列印資料匣索引時發生錯誤"); } else{ for(i = mn_first_cur(msgmap); i > 0L; i = mn_next_cur(msgmap), next++){ @@ -10494,7 +10485,7 @@ e, b, NULL, FM_NEW_MESS | FM_NOINDENT, print_char)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Error printing message"); + "列印信件時發生錯誤"); break; } } @@ -10803,7 +10794,7 @@ /* else fall thru as if cancelled */ case 1 : - cmd_cancelled("Pipe command"); + cmd_cancelled("導向(Pipe)命令"); done++; break; @@ -11150,12 +11141,12 @@ count_lflags_in_thread(state->mail_stream,thrd,msgmap,MN_NONE)) i = 1; - sel_opts1[1].label = "unselect Curthrd" + (i ? 0 : 2); + sel_opts1[1].label = "取消目前選擇的討論串" + (i ? 0 : 2); } else{ i = get_lflag(state->mail_stream, msgmap, mn_get_cur(msgmap), MN_SLCT); - sel_opts1[1].label = "unselect Cur" + (i ? 0 : 2); + sel_opts1[1].label = "取消目前選擇" + (i ? 0 : 2); } sel_opts += 2; /* disable extra options */ @@ -11229,7 +11220,7 @@ */ switch(q){ case 'x': /* cancel */ - cmd_cancelled("Select command"); + cmd_cancelled("選取命令"); return; case 'c' : /* select/unselect current */ @@ -11253,10 +11244,10 @@ set_lflag(state->mail_stream, msgmap, i, MN_SLCT, 1); } - q_status_message4(SM_ORDER,0,2, - "%.200s%.200s message%.200s %.200sselected", - msgno ? "" : "All ", comatose(diff), - plural(diff), msgno ? "UN" : ""); + q_status_message3(SM_ORDER,0,2, + "%.200s%.200s 封信件被%.200s選取", + msgno ? "" : "全部 ", comatose(diff), + msgno ? "取消" : ""); return; case 'n' : /* Select by Number */ @@ -11363,35 +11354,33 @@ if(!diff){ if(narrow) - q_status_message4(SM_ORDER, 0, 2, - "%.200s. %.200s message%.200s remain%.200s selected.", + q_status_message2(SM_ORDER, 0, 2, + "%.200s。%.200s 封信件仍被選取。", mm_search_count - ? "No change resulted" - : "No messages in intersection", - comatose(old_tot), plural(old_tot), - (old_tot == 1L) ? "s" : ""); + ? "沒有造成任何改變" + : "交點中沒有信件", + comatose(old_tot)); else if(old_tot) q_status_message(SM_ORDER, 0, 2, - "No change resulted. Matching messages already selected."); + "沒有造成任何改變。符合條件的信件已經被選取。"); else q_status_message1(SM_ORDER | SM_DING, 0, 2, - "Select failed. No %.200smessages selected.", - old_tot ? "additional " : ""); + "選取失敗。沒有%.200s信件被選取。", + old_tot ? "額外的" : ""); } else if(old_tot){ sprintf(tmp_20k_buf, - "Select matched %ld message%s. %s %smessage%s %sselected.", + "選擇符合的 %ld 封信件。%s %s 封信件已被%s選取。", +// Select matched %ld message%s. %s %smessage%s %sselected.", (diff > 0) ? diff : old_tot + diff, - plural((diff > 0) ? diff : old_tot + diff), + (diff > 0) ? "全部 " : "", comatose((diff > 0) ? any_lflagged(msgmap, MN_SLCT) : -diff), - (diff > 0) ? "total " : "", - plural((diff > 0) ? any_lflagged(msgmap, MN_SLCT) : -diff), - (diff > 0) ? "" : "UN"); + (diff > 0) ? "" : "取消"); q_status_message(SM_ORDER, 0, 2, tmp_20k_buf); } else - q_status_message2(SM_ORDER, 0, 2, "Select matched %.200s message%.200s!", - comatose(diff), plural(diff)); + q_status_message1(SM_ORDER, 0, 2, "選取符合條件的 %.200s 封信件!", + comatose(diff)); } @@ -11458,10 +11447,9 @@ else set_thread_lflags(state->mail_stream, thrd, msgmap, MN_SLCT, 1); - q_status_message3(SM_ORDER, 0, 2, "%.200s message%.200s %.200sselected", + q_status_message2(SM_ORDER, 0, 2, "%.200s 封信件已被%.200s選取", comatose(all_selected ? was : tot-was), - plural(all_selected ? was : tot-was), - all_selected ? "UN" : ""); + all_selected ? "取消" : ""); } else{ if(all_selected = @@ -11496,8 +11484,8 @@ else set_lflag(state->mail_stream, msgmap, cur, MN_SLCT, 1); - q_status_message2(SM_ORDER, 0, 2, "Message %.200s %.200sselected", - long2string(cur), all_selected ? "UN" : ""); + q_status_message2(SM_ORDER, 0, 2, "信件 %.200s 已被%.200s選取", + long2string(cur), all_selected ? "取消" : ""); } @@ -11537,21 +11525,21 @@ sel_opts3[i].ch = '*'; sel_opts3[i].rval = '*'; sel_opts3[i].name = "*"; - sel_opts3[i++].label = "Flag"; + sel_opts3[i++].label = "旗標"; } if(F_ON(F_ENABLE_PIPE,state)){ /* pipe? */ sel_opts3[i].ch = '|'; sel_opts3[i].rval = '|'; sel_opts3[i].name = "|"; - sel_opts3[i++].label = "Pipe"; + sel_opts3[i++].label = "導向(Pipe)"; } if(F_ON(F_ENABLE_BOUNCE,state)){ /* bounce? */ sel_opts3[i].ch = 'b'; sel_opts3[i].rval = 'b'; sel_opts3[i].name = "B"; - sel_opts3[i++].label = "Bounce"; + sel_opts3[i++].label = "退信"; } if(flags & AC_FROM_THREAD){ @@ -11567,9 +11555,9 @@ sel_opts3[i].rval = ';'; sel_opts3[i].name = ";"; if(flags & AC_UNSEL) - sel_opts3[i++].label = "UnSelect"; + sel_opts3[i++].label = "取消選取"; else - sel_opts3[i++].label = "Select"; + sel_opts3[i++].label = "選取"; } if(F_ON(F_ENABLE_PRYNT, state)){ /* this one is invisible */ @@ -11581,8 +11569,8 @@ sel_opts3[i].ch = -1; - sprintf(prompt, "%.20s command : ", - (flags & AC_FROM_THREAD) ? "THREAD" : "APPLY"); + sprintf(prompt, "%.20s 命令:", + (flags & AC_FROM_THREAD) ? "討論串" : "套用"); cmd = double_radio_buttons(prompt, q_line, sel_opts3, 'z', 'x', NO_HELP, RB_SEQ_SENSITIVE); } @@ -11658,8 +11646,8 @@ break; case 'x' : /* cancel */ - cmd_cancelled((flags & AC_FROM_THREAD) ? "Thread command" - : "Apply command"); + cmd_cancelled((flags & AC_FROM_THREAD) ? "討論串命令" + : "套用命令"); rv = 0; break; @@ -11907,7 +11895,7 @@ *t = '\0'; if(r == 1 || numbers[0] == '\0'){ - cmd_cancelled("Selection by number"); + cmd_cancelled("根據數字選擇"); return(1); } else @@ -12062,7 +12050,7 @@ *t = '\0'; if(r == 1 || numbers[0] == '\0'){ - cmd_cancelled("Selection by number"); + cmd_cancelled("根據數字選擇"); return(1); } else @@ -12251,7 +12239,7 @@ prompt, sel_date_opt, help, &flags); switch (r){ case 1 : - cmd_cancelled("Selection by date"); + cmd_cancelled("根據日期選擇"); return(1); case 3 : @@ -12440,15 +12428,15 @@ ekey[0].ch = ctrl('T'); ekey[0].name = "^T"; ekey[0].rval = 10; - ekey[0].label = "Cur To"; + ekey[0].label = "目前收信人"; ekey[1].ch = ctrl('R'); ekey[1].name = "^R"; ekey[1].rval = 11; - ekey[1].label = "Cur From"; + ekey[1].label = "目前寄件人"; ekey[2].ch = ctrl('W'); ekey[2].name = "^W"; ekey[2].rval = 12; - ekey[2].label = "Cur Cc"; + ekey[2].label = "目前副本"; break; case 's' : @@ -12456,7 +12444,7 @@ ekey[0].ch = ctrl('X'); ekey[0].name = "^X"; ekey[0].rval = 13; - ekey[0].label = "Cur Subject"; + ekey[0].label = "目前主題"; break; case 'a' : @@ -12575,7 +12563,7 @@ } if(type == 'x' || r == 'x'){ - cmd_cancelled("Selection by text"); + cmd_cancelled("根據文字選擇"); return(1); } @@ -12845,7 +12833,7 @@ *t = '\0'; if(r == 1 || numbers[0] == '\0'){ - cmd_cancelled("Selection by size"); + cmd_cancelled("根據大小選擇"); return(1); } else @@ -13069,7 +13057,7 @@ NO_HELP, RB_NORM|RB_RET_HELP, NULL); if(s == 'x'){ - cmd_cancelled("Selection by status"); + cmd_cancelled("根據狀態選擇"); return(1); } else if(s == 3){ @@ -13211,7 +13199,7 @@ if(r == 3) help = help == NO_HELP ? h_select_keyword : NO_HELP; else if(r == 1){ - cmd_cancelled("Selection by keyword"); + cmd_cancelled("根據關鍵字選擇"); return(1); } @@ -13803,9 +13791,9 @@ /*----- String together the prompt ------*/ tmp[1] = '\0'; if(F_ON(F_USE_FK,ps_global)) - strncpy(prompt, "Choose type of sort : ", sizeof(prompt)); + strncpy(prompt, "選取排序方式:", sizeof(prompt)); else - strncpy(prompt, "Choose type of sort, or 'R' to reverse current sort : ", + strncpy(prompt, "選取排序方式,或以「R」反轉目前的排序:", sizeof(prompt)); for(i = 0; state->sort_types[i] != EndofList; i++) { @@ -13850,7 +13838,7 @@ } else{ retval = 0; - cmd_cancelled("Sort"); + cmd_cancelled("排序"); } while(--i >= 0) --- pine/init.c.orig Tue Sep 13 02:53:17 2005 +++ pine/init.c Fri Oct 7 21:53:29 2005 @@ -428,7 +428,7 @@ /*---------------------------------------------------------------------- These are the variables that control a number of pine functions. They -come out of the .pinerc and the /usr/local/lib/pine.conf files. Some can +come out of the .pinerc and the /usr/local/etc/pine.conf files. Some can be set by the user while in Pine. Eventually all the local ones should be so and maybe the global ones too. @@ -1582,6 +1582,9 @@ */ fixedprc = new_pinerc_s(SYSTEM_PINERC_FIXED); #endif + + F_TURN_ON(F_TCAP_WINS,ps); + F_TURN_ON(F_QUELL_INTERNAL_MSG,ps); /* * cache-remote-pinerc is experimental and unannounced as of 4.40. --- pine/help.c.orig Wed Nov 24 02:29:47 2004 +++ pine/help.c Fri Oct 7 21:53:28 2005 @@ -53,12 +53,12 @@ {NULL,NULL,{MC_EXIT,1,{'e'}}, KS_EXITMODE}, {NULL,NULL,{MC_EXIT,1,{'e'}}, KS_EXITMODE}, {NULL,NULL,{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, - {"^B","PrevLink",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, - {"^F","NextLink",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, + {"^B","前一鏈結",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, + {"^F","次一鏈結",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, PRYNTMSG_MENU, - {"Z","Print All",{MC_PRINTALL,1,{'z'}},KS_NONE}, + {"Z","列印全部",{MC_PRINTALL,1,{'z'}},KS_NONE}, NULL_MENU, WHEREIS_MENU}; INST_KEY_MENU(help_keymenu, help_keys); @@ -256,7 +256,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = CharStar; - sargs.text.desc = "help text"; + sargs.text.desc = "輔助說明文字"; if(sargs.text.handles = handles) while(sargs.text.handles->type == URL && !sargs.text.handles->h.url.path @@ -290,7 +290,7 @@ } if(!sargs.bar.title) - sargs.bar.title = "HELP TEXT"; + sargs.bar.title = "輔助說明文字"; } sargs.bar.style = TextPercent; @@ -307,18 +307,18 @@ setbitmap(sargs.keys.bitmap); if(flags & HLPD_FROMHELP){ km.keys[HLP_EXIT_KEY].name = "P"; - km.keys[HLP_EXIT_KEY].label = "Prev Help"; + km.keys[HLP_EXIT_KEY].label = "前一說明"; km.keys[HLP_EXIT_KEY].bind.cmd = MC_FINISH; km.keys[HLP_EXIT_KEY].bind.ch[0] = 'p'; km.keys[HLP_SUBEXIT_KEY].name = "E"; - km.keys[HLP_SUBEXIT_KEY].label = "Exit Help"; + km.keys[HLP_SUBEXIT_KEY].label = "離開"; km.keys[HLP_SUBEXIT_KEY].bind.cmd = MC_EXIT; km.keys[HLP_SUBEXIT_KEY].bind.ch[0] = 'e'; } else if(text == h_special_help_nav){ km.keys[HLP_EXIT_KEY].name = "P"; - km.keys[HLP_EXIT_KEY].label = "Prev Help"; + km.keys[HLP_EXIT_KEY].label = "前一說明"; km.keys[HLP_EXIT_KEY].bind.cmd = MC_FINISH; km.keys[HLP_EXIT_KEY].bind.ch[0] = 'p'; @@ -327,12 +327,12 @@ } else{ km.keys[HLP_EXIT_KEY].name = "E"; - km.keys[HLP_EXIT_KEY].label = "Exit Help"; + km.keys[HLP_EXIT_KEY].label = "離開"; km.keys[HLP_EXIT_KEY].bind.cmd = MC_EXIT; km.keys[HLP_EXIT_KEY].bind.ch[0] = 'e'; km.keys[HLP_SUBEXIT_KEY].name = "?"; - km.keys[HLP_SUBEXIT_KEY].label = "Help Help"; + km.keys[HLP_SUBEXIT_KEY].label = "輔助說明"; km.keys[HLP_SUBEXIT_KEY].bind.cmd = MC_HELP; km.keys[HLP_SUBEXIT_KEY].bind.ch[0] = '?'; } @@ -503,7 +503,7 @@ } sparms->keys.menu->keys[HLP_VIEW_HANDLE].name = "V"; - sparms->keys.menu->keys[HLP_VIEW_HANDLE].label = "[View Link]"; + sparms->keys.menu->keys[HLP_VIEW_HANDLE].label = "[檢視鏈結]"; } } @@ -556,7 +556,7 @@ print_text(NEWLINE); if(error = gf_pipe(helper_getc, print_char)) - q_status_message1(SM_ORDER | SM_DING, 3, 3, "Printing Error: %.200s", error); + q_status_message1(SM_ORDER | SM_DING, 3, 3, "列印錯誤:%.200s", error); print_char(ctrl('L')); /* new page. */ } @@ -586,7 +586,7 @@ #endif if(ps_global->intr_pending){ q_status_message(SM_ORDER, 3, 3, - "Print of all help cancelled"); + "取消列印所有的輔助說明"); break; } @@ -1192,7 +1192,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(out_store); sargs.text.src = CharStar; - sargs.text.desc = "journal"; + sargs.text.desc = "日誌"; sargs.keys.menu = &rev_msg_keymenu; sargs.proc.tool = journal_processor; sargs.start.on = LastPage; @@ -1813,7 +1813,7 @@ #endif } else if(ch == 'x'){ - q_status_message(SM_ORDER, 0, 3, "Bug report cancelled."); + q_status_message(SM_ORDER, 0, 3, "取消錯誤回報。"); return(-1); } } @@ -1937,13 +1937,13 @@ if(in_handle){ hp_menu[++i].type = tQueue; hp_menu[i].label.style = lNormal; - hp_menu[i].label.string = "View Help Section"; + hp_menu[i].label.string = "檢視輔助說明章節"; hp_menu[i].data.val = 'V'; } hp_menu[++i].type = tQueue; hp_menu[i].label.style = lNormal; - hp_menu[i].label.string = "Exit Help"; + hp_menu[i].label.string = "離開"; hp_menu[i].data.val = 'E'; hp_menu[++i].type = tTail; @@ -1968,18 +1968,18 @@ if(in_handle){ hp_menu[++i].type = tQueue; hp_menu[i].label.style = lNormal; - hp_menu[i].label.string = "View Help Section"; + hp_menu[i].label.string = "檢視該節說明"; hp_menu[i].data.val = 'V'; } hp_menu[++i].type = tQueue; hp_menu[i].label.style = lNormal; - hp_menu[i].label.string = "Previous Help Section"; + hp_menu[i].label.string = "前一節"; hp_menu[i].data.val = 'P'; hp_menu[++i].type = tQueue; hp_menu[i].label.style = lNormal; - hp_menu[i].label.string = "Exit Help"; + hp_menu[i].label.string = "離開"; hp_menu[i].data.val = 'E'; hp_menu[++i].type = tTail; --- pine/folder.c.orig Tue Sep 13 06:04:25 2005 +++ pine/folder.c Fri Oct 7 21:53:28 2005 @@ -58,10 +58,10 @@ #include "headers.h" -#define CLICKHERE "[ Select Here to See Expanded List ]" -#define CLICKHERETOO "[ ** Empty List ** Select Here to Try Re-Expanding ]" +#define CLICKHERE "[ 選這裡以檢視展開的列表 ]" +#define CLICKHERETOO "[ ** 空的列表 ** 選這裡來重新展開 ]" #define CLICKHERETOONEWS \ - "[ ** Empty List ** Use \"A Subscribe\" to subscribe to a newsgroup ]" + "[ ** 空的列表 ** 使用 \"A Subscribe\" 來訂閱一個新聞組群 ]" #define ALL_FOUND(X) (((X)->dir->status & CNTXT_NOFIND) == 0 && \ ((X)->dir->status & CNTXT_PARTFIND) == 0) #define FLDR_ENT(S) (((S) && (S)->text.handles) \ @@ -69,13 +69,13 @@ FOLDERS((S)->text.handles->h.f.context)) \ : NULL) #define SUBSCRIBE_PMT \ - "Enter newsgroup name (or partial name to get a list): " -#define LISTMODE_GRIPE "Use \"X\" to mark selections in list mode" -#define SEL_ALTER_PMT "ALTER folder selection : " -#define SEL_TEXT_PMT "Select by folder Name or Contents ? " -#define SEL_PROP_PMT "Select by which folder property ? " + "輸入新聞組群名稱(或部份名稱以取得列表):" +#define LISTMODE_GRIPE "以 \"X\" 來在列表模式中標示選擇" +#define SEL_ALTER_PMT "更改資料匣的選擇:" +#define SEL_TEXT_PMT "根據資料匣名稱或內容來選擇?" +#define SEL_PROP_PMT "根據哪一個資料匣性質?" #define DIR_FOLD_PMT \ - "Folder and directory of the same name will be deleted. Continue" + "同名稱的資料匣 *可能* 被刪除。繼續" #define mail_list(S, R, N) mail_list_internal(S, R, N) @@ -334,15 +334,15 @@ /* * Various screen keymenu/command binding s. */ -#define PREVC_MENU {"P", "PrevCltn", {MC_PREVITEM, 1, {'p'}}, KS_NONE} -#define NEXTC_MENU {"N", "NextCltn", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE} -#define DELC_MENU {"D", "Del Cltn", {MC_DELETE,2,{'d',KEY_DEL}}, KS_NONE} -#define PREVF_MENU {"P", "PrevFldr", {MC_PREV_HANDLE, 3, \ +#define PREVC_MENU {"P", "前一總集", {MC_PREVITEM, 1, {'p'}}, KS_NONE} +#define NEXTC_MENU {"N", "次一總集", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE} +#define DELC_MENU {"D", "刪除總集", {MC_DELETE,2,{'d',KEY_DEL}}, KS_NONE} +#define PREVF_MENU {"P", "前一資料匣", {MC_PREV_HANDLE, 3, \ {'p', ctrl('B'), KEY_LEFT}}, KS_NONE} -#define NEXTF_MENU {"N", "NextFldr", {MC_NEXT_HANDLE, 4, \ +#define NEXTF_MENU {"N", "次一資料匣", {MC_NEXT_HANDLE, 4, \ {'n', ctrl('F'), TAB, KEY_RIGHT}}, \ KS_NONE} -#define CIND_MENU {"I", "CurIndex", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX} +#define CIND_MENU {"I", "索引", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX} static struct { int num_done; @@ -352,8 +352,8 @@ static struct key context_mgr_keys[] = {HELP_MENU, OTHER_MENU, - {"<", "Main Menu", {MC_MAIN,3,{'m','<',','}}, KS_EXITMODE}, - {">", "[View Cltn]", + {"<", "主選單", {MC_MAIN,3,{'m','<',','}}, KS_EXITMODE}, + {">", "[檢視總集]", {MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, @@ -382,15 +382,15 @@ static struct key context_cfg_keys[] = {HELP_MENU, OTHER_MENU, - {"E", "Exit Setup", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "離開設定", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A", "Add Cltn", {MC_ADD,1,{'a'}}, KS_NONE}, + {"A", "新增總集", {MC_ADD,1,{'a'}}, KS_NONE}, DELC_MENU, - {"$", "Shuffle", {MC_SHUFFLE,1,{'$'}},KS_NONE}, + {"$", "重整", {MC_SHUFFLE,1,{'$'}},KS_NONE}, WHEREIS_MENU, HELP_MENU, @@ -409,9 +409,9 @@ static struct key context_select_keys[] = {HELP_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, NULL_MENU, - {">", "[View Cltn]", + {">", "[檢視總集]", {MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, @@ -425,9 +425,9 @@ static struct key context_fcc_keys[] = {HELP_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, NULL_MENU, - {">", "[View Cltn]", + {">", "[檢視總集]", {MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, @@ -449,23 +449,23 @@ NEXTF_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"A","Add",{MC_ADDFLDR,1,{'a'}},KS_NONE}, + {"A","新增",{MC_ADDFLDR,1,{'a'}},KS_NONE}, DELETE_MENU, - {"R","Rename",{MC_RENAMEFLDR,1,{'r'}}, KS_NONE}, + {"R","更名",{MC_RENAMEFLDR,1,{'r'}}, KS_NONE}, WHEREIS_MENU, HELP_MENU, OTHER_MENU, QUIT_MENU, MAIN_MENU, - {"V", "[View Fldr]", {MC_OPENFLDR}, KS_NONE}, + {"V", "[檢視檔案匣]", {MC_OPENFLDR}, KS_NONE}, GOTO_MENU, CIND_MENU, COMPOSE_MENU, - {"%", "Print", {MC_PRINTFLDR,1,{'%'}}, KS_PRINT}, - {"Z", "ZoomMode", {MC_ZOOM,1,{'z'}}, KS_NONE}, - {";","Select",{MC_SELECT,1,{';'}},KS_SELECT}, - {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECT}, + {"%", "列印", {MC_PRINTFLDR,1,{'%'}}, KS_PRINT}, + {"Z", "縮放模式", {MC_ZOOM,1,{'z'}}, KS_NONE}, + {";","選擇",{MC_SELECT,1,{';'}},KS_SELECT}, + {":","選擇目前的",{MC_SELCUR,1,{':'}},KS_SELECT}, HELP_MENU, OTHER_MENU, @@ -495,7 +495,7 @@ static struct key folder_sel_keys[] = {HELP_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, NULL_MENU, {NULL, NULL, {MC_CHOICE,0}, KS_NONE}, PREVF_MENU, @@ -530,14 +530,14 @@ static struct key folder_sub_keys[] = {HELP_MENU, - {"S", "Subscribe", {MC_CHOICE,1,{'s'}}, KS_NONE}, - {"E", "ExitSubscb", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {NULL, "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"S", "訂閱\", {MC_CHOICE,1,{'s'}}, KS_NONE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {NULL, "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVF_MENU, NEXTF_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, - {"L", "List Mode", {MC_LISTMODE, 1, {'l'}}, KS_NONE}, + {"L", "列表模式", {MC_LISTMODE, 1, {'l'}}, KS_NONE}, NULL_MENU, NULL_MENU, WHEREIS_MENU}; @@ -550,8 +550,8 @@ static struct key folder_post_keys[] = {HELP_MENU, NULL_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, - {"S", "[Select]", {MC_CHOICE, 3, {'s',ctrl('M'),ctrl('J')}}, KS_NONE}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, + {"S", "[選擇]", {MC_CHOICE, 3, {'s',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVF_MENU, NEXTF_MENU, PREVPAGE_MENU, @@ -596,10 +596,10 @@ fs.agg_ops = F_ON(F_ENABLE_AGG_OPS, ps_global) != 0; fs.relative_path = 1; fs.f.valid = fl_val_gen; - fs.f.title.bar = "FOLDER LIST"; + fs.f.title.bar = "信件匣列表"; fs.f.title.style = FolderName; fs.f.help.text = h_folder_maint; - fs.f.help.title = "HELP FOR FOLDERS"; + fs.f.help.title = "信件匣列表的輔助說明"; fs.km = &folder_km; if(context_isambig(ps->cur_folder) @@ -690,10 +690,10 @@ dprint(1, (debugfile, "=== folder_config_screen called ====\n")); mailcap_free(); /* free resources we won't be using for a while */ - sprintf(title, "SETUP %.15sCOLLECTION LIST", - edit_exceptions ? "EXCEPTIONS " : ""); - sprintf(htitle, "HELP FOR SETUP %.15sCOLLECTIONS", - edit_exceptions ? "EXCEPTIONS " : ""); + sprintf(title, "設定%.15s總集列表", + edit_exceptions ? "例外 " : ""); + sprintf(htitle, "設定%.15s總集的輔助說明", + edit_exceptions ? "例外 " : ""); memset(&css, 0, sizeof(CONT_SCR_S)); css.title = title; @@ -743,10 +743,10 @@ fs.context = *cntxtp; fs.combined_view = !sublist && F_ON(F_CMBND_FOLDER_DISP, ps_global) != 0; fs.f.valid = fl_val_gen; - fs.f.title.bar = "GOTO: SELECT FOLDER"; + fs.f.title.bar = "前往:選擇資料匣"; fs.f.title.style = FolderName; fs.f.help.text = h_folder_open; - fs.f.help.title = "HELP FOR OPENING FOLDERS"; + fs.f.help.title = "開啟資料匣的輔助說明"; fs.km = &folder_sel_km; /* If we were provided a string, @@ -755,7 +755,7 @@ if(sublist && *folder && context_isambig(folder)){ if((*cntxtp)->use & CNTXT_INCMNG){ q_status_message(SM_ORDER, 0, 3, - "All folders displayed for Incoming Collection"); + "所有的資料匣被顯示為來源總集"); } else{ folder_sublist_context(folder, *cntxtp, &fake_context, @@ -806,10 +806,10 @@ fs.context = *cntxtp; fs.combined_view = F_ON(F_CMBND_FOLDER_DISP, ps_global) != 0; fs.f.valid = fl_val_gen; - fs.f.title.bar = "SAVE: SELECT FOLDER"; + fs.f.title.bar = "存檔:選擇資料匣"; fs.f.title.style = MessageNumber; fs.f.help.text = h_folder_save; - fs.f.help.title = "HELP FOR SAVING MESSAGES TO FOLDERS"; + fs.f.help.title = "將信件存入資料匣的輔助說明"; fs.km = &folder_sela_km; /* If we were provided a string, @@ -818,7 +818,7 @@ if(sublist && *folder && context_isambig(folder)){ if((*cntxtp)->use & CNTXT_INCMNG){ q_status_message(SM_ORDER, 0, 3, - "All folders displayed for Incoming Collection"); + "所有的資料匣被顯示為來源總集"); } else{ folder_sublist_context(folder, *cntxtp, &fake_context, @@ -997,7 +997,7 @@ /* leave (*new_dir)->ref == NULL */ } - sprintf(tmp_20k_buf, "List of folders matching \"%s*\"", folder); + sprintf(tmp_20k_buf, "符合 \"%s*\" 的資料匣列表", folder); (*new_dir)->desc = cpystr(tmp_20k_buf); } @@ -1199,12 +1199,12 @@ CONT_SCR_S css; memset(&css, 0, sizeof(CONT_SCR_S)); - css.title = "COLLECTION LIST"; + css.title = "總集列表"; css.print_string = "contexts "; css.start = start; css.contexts = &ps_global->context_list; css.help.text = h_collection_screen; - css.help.title = "HELP FOR COLLECTION LIST"; + css.help.title = "總集列表的輔助說明"; css.keymenu = km; css.edit = edit_config; @@ -1260,7 +1260,7 @@ pbf.pine_flags |= P_NOBODY; pbf.exittest = exit_collection_add; pbf.canceltest = cancel_collection_add; - sprintf(tmp, "FOLDER COLLECTION %.100s", func); + sprintf(tmp, "資料匣總集 %.100s", func); pbf.pine_anchor = set_titlebar(tmp, ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder,ps_global->msgmap, @@ -1523,10 +1523,10 @@ else exists = (i & FEX_ISDIR); - sprintf(prompt, "Exit%.50s" , + sprintf(prompt, "離開%.50s" , exists - ? " and save changes" - : ", saving changes and creating Path"); + ? " 並存檔" + : ",存檔並建立路徑"); if(want_to(prompt, 'y', 0, NO_HELP, WT_NORM) == 'y'){ if(!exists && !pine_mail_create(NULL, tmp)){ flush_status_messages(1); /* mail_create gripes */ @@ -1558,7 +1558,7 @@ char *rstr = NULL; void (*redraw)() = ps_global->redrawer; #define CCA_PROMPT \ - "Cancel Add (answering \"Yes\" will abandon any changes made) " + "取消新增 (回答 \"Yes\" 將放棄先前做過的任何改變) " ps_global->redrawer = redraw_pico; fix_windsize(ps_global); @@ -1675,7 +1675,7 @@ FSTATE_S *fs; { if(f->subscribed){ - q_status_message1(SM_ORDER, 0, 4, "Already subscribed to \"%.200s\"", + q_status_message1(SM_ORDER, 0, 4, "已訂閱\至 \"%.200s\"", FLDR_NAME(f)); return(0); } @@ -1718,7 +1718,7 @@ } else{ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Formatting Error: Can't create space for list"); + "格式化錯誤:無法為列表建立空間"); return(NULL); } @@ -1739,7 +1739,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(screen_text); sargs.text.src = CharStar; - sargs.text.desc = "folder list"; + sargs.text.desc = "信件匣列表"; if(sargs.text.handles = folder_list_handle(fs, handles)) sargs.start.on = Handle; @@ -2059,7 +2059,7 @@ else if(fp->fs->combined_view && (F_ON(F_CMBND_SUBDIR_DISP, ps_global) || !c_list->dir->prev)){ - static char *emptiness = "[No Folders in Collection]"; + static char *emptiness = "[總集中沒有資料匣]"; gf_puts(folder_list_center_space(emptiness, cols), pc); len = folder_list_write(pc, handlesp, c_list, -1, emptiness, @@ -2069,7 +2069,7 @@ else if(fp->fs->combined_view && (F_ON(F_CMBND_SUBDIR_DISP, ps_global) || !c_list->dir->prev)){ - static char *unexpanded = "[Select Here to See Expanded List]"; + static char *unexpanded = "[選這裡以檢視展開後的列表]"; gf_puts(folder_list_center_space(unexpanded, cols), pc); len = folder_list_write(pc, handlesp, c_list, -1, unexpanded, @@ -2290,11 +2290,11 @@ q_status_message(SM_ORDER, 0, 1, LISTMODE_GRIPE); } else - q_status_message(SM_ORDER, 0, 4, "Already in List Mode"); + q_status_message(SM_ORDER, 0, 4, "已經處於列表模式中"); } else q_status_message(SM_ORDER, 0, 4, - "No Folders! Can't enter List Mode"); + "沒有資料匣!無法進入列表模式"); break; @@ -2320,7 +2320,7 @@ sparms->text.handles->h.f.index); else q_status_message(SM_ORDER, 0, 4, - "No Folders! Nothing to View"); + "沒有資料匣!沒有可供檢視的項目"); break; @@ -2459,7 +2459,7 @@ } else q_status_message(SM_ORDER | SM_DING, 0, 4, - "Empty folder collection. No folder to rename!"); + "空的資料匣總集。沒有可供更名的資料匣!"); break; @@ -2469,7 +2469,7 @@ if(!(sparms->text.handles && folder_total(FOLDERS(sparms->text.handles->h.f.context)))){ q_status_message(SM_ORDER | SM_DING, 0, 4, - "Empty folder collection. No folder to delete!"); + "空的資料匣總集。沒有可供刪除的資料匣!"); } else{ char next_folder[MAILTMPLEN+1]; @@ -2609,7 +2609,7 @@ } else q_status_message(SM_ORDER | SM_DING, 0, 4, - "Empty folder collection. No folder to select!"); + "空的資料匣總集。沒有可供選擇的資料匣!"); break; @@ -2625,11 +2625,11 @@ if(sparms->text.handles->h.f.context->use & CNTXT_ZOOM){ sparms->text.handles->h.f.context->use &= ~CNTXT_ZOOM; q_status_message(SM_ORDER, 0, 3, - "Folder List Zoom mode is now off"); + "資料匣列表縮放模式目前為關閉狀態"); } else{ q_status_message1(SM_ORDER, 0, 3, - "In Zoomed list of %.200s folders. Use \"Z\" to restore regular list", + "在 %.200s 個資料匣縮放的列表中。使用 \"Z\" 來回復正常列表", int2string(n)); sparms->text.handles->h.f.context->use |= CNTXT_ZOOM; } @@ -2649,10 +2649,10 @@ } else q_status_message(SM_ORDER, 0, 3, - "No selected folders to Zoom on"); + "尚未選擇供放大的資料匣。"); } else - q_status_message(SM_ORDER, 0, 4, "No Folders to Zoom on!"); + q_status_message(SM_ORDER, 0, 4, "沒有可供放大的資料匣!"); break; @@ -2881,7 +2881,7 @@ empty++; if(empty) - q_status_message(SM_ORDER | SM_DING, 3, 3, "Empty folder list!"); + q_status_message(SM_ORDER | SM_DING, 3, 3, "空的資料匣列表!"); return(rv); } @@ -2991,7 +2991,7 @@ ? sparms->text.handles->h.f.context->dir->prev : FPROC(sparms)->fs->context->dir->prev){ sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = '<'; - sparms->keys.menu->keys[KM_COL_KEY].label = "ParentDir"; + sparms->keys.menu->keys[KM_COL_KEY].label = "上層目錄"; sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_PARENT; } else if((FPROC(sparms)->fs->context->next @@ -3001,7 +3001,7 @@ /* ch[0] was set to zero but that messes up mouse in xterm */ /* set to 'l' instead, but could also be set to '<' if we */ /* want to play it safe */ - sparms->keys.menu->keys[KM_COL_KEY].label = "ClctnList"; + sparms->keys.menu->keys[KM_COL_KEY].label = "總集列表"; sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_EXIT; } else{ @@ -3013,7 +3013,7 @@ sparms->keys.menu->keys[KM_MAIN_KEY].bind.cmd = MC_NONE; sparms->keys.menu->keys[KM_MAIN_KEY].bind.nch = 0; - sparms->keys.menu->keys[KM_COL_KEY].label = "Main Menu"; + sparms->keys.menu->keys[KM_COL_KEY].label = "主選單"; sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_MAIN; sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'm'; } @@ -3029,7 +3029,7 @@ FOLDERS(sparms->text.handles->h.f.context)))){ if(fp->isdir){ if(fp->isfolder){ - sparms->keys.menu->keys[KM_SEL_KEY].label = "View Dir"; + sparms->keys.menu->keys[KM_SEL_KEY].label = "檢視目錄"; menu_clear_binding(sparms->keys.menu, 'v'); menu_clear_binding(sparms->keys.menu, ctrl('M')); menu_clear_binding(sparms->keys.menu, ctrl('J')); @@ -3041,7 +3041,7 @@ setbitn(KM_IMPORT_KEY, sparms->keys.bitmap); } else{ - sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Dir]"; + sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視目錄]"; menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE); @@ -3051,7 +3051,7 @@ } } else{ - sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Fldr]"; + sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視資料匣]"; menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE); @@ -3063,7 +3063,7 @@ else if(FPROC(sparms)->fs->combined_view && sparms->text.handles && sparms->text.handles->h.f.context && !sparms->text.handles->h.f.context->dir->prev){ - sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Cltn]"; + sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視總集]"; menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE); @@ -3130,7 +3130,7 @@ ? sparms->text.handles->h.f.context->dir->prev : FPROC(sparms)->fs->context->dir->prev){ sparms->keys.menu->keys[FC_COL_KEY].name = "<"; - sparms->keys.menu->keys[FC_COL_KEY].label = "ParentDir"; + sparms->keys.menu->keys[FC_COL_KEY].label = "上層目錄"; sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_PARENT; sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<'; sparms->keys.menu->keys[FC_COL_KEY].bind.ch[1] = ','; @@ -3146,7 +3146,7 @@ || FPROC(sparms)->fs->context->prev) && !FPROC(sparms)->fs->combined_view){ sparms->keys.menu->keys[FC_COL_KEY].name = "<"; - sparms->keys.menu->keys[FC_COL_KEY].label = "ClctnList"; + sparms->keys.menu->keys[FC_COL_KEY].label = "總集列表"; sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_COLLECTIONS; sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<'; sparms->keys.menu->keys[FC_COL_KEY].bind.ch[1] = ','; @@ -3163,7 +3163,7 @@ * turn off "ExitSelect" in first slot */ sparms->keys.menu->keys[FC_COL_KEY].name = "E"; - sparms->keys.menu->keys[FC_COL_KEY].label = "ExitSelect"; + sparms->keys.menu->keys[FC_COL_KEY].label = "離開"; sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_EXIT; sparms->keys.menu->keys[FC_COL_KEY].bind.nch = 1; sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = 'e'; @@ -3194,21 +3194,21 @@ menu_add_binding(sparms->keys.menu, KEY_RIGHT, MC_CHOICE); if(fp->isfolder){ - sparms->keys.menu->keys[FC_SEL_KEY].label = "View Dir"; + sparms->keys.menu->keys[FC_SEL_KEY].label = "檢視目錄"; setbitn(FC_ALTSEL_KEY, sparms->keys.bitmap); menu_add_binding(sparms->keys.menu, 's', MC_OPENFLDR); menu_add_binding(sparms->keys.menu, ctrl('M'), MC_OPENFLDR); menu_add_binding(sparms->keys.menu, ctrl('J'), MC_OPENFLDR); } else{ - sparms->keys.menu->keys[FC_SEL_KEY].label = "[View Dir]"; + sparms->keys.menu->keys[FC_SEL_KEY].label = "[檢視目錄]"; menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE); } } else{ sparms->keys.menu->keys[FC_SEL_KEY].name = "S"; - sparms->keys.menu->keys[FC_SEL_KEY].label = "[Select]"; + sparms->keys.menu->keys[FC_SEL_KEY].label = "[選擇]"; menu_add_binding(sparms->keys.menu, 's', MC_CHOICE); menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE); @@ -3260,14 +3260,14 @@ if(FPROC(sparms)->fs->list_cntxt){ clrbitn(SB_LIST_KEY, sparms->keys.bitmap); sparms->keys.menu->keys[SB_SEL_KEY].name = "X"; - sparms->keys.menu->keys[SB_SEL_KEY].label = "[Set/Unset]"; + sparms->keys.menu->keys[SB_SEL_KEY].label = "[設定/取消設定]"; sparms->keys.menu->keys[SB_SEL_KEY].bind.cmd = MC_SELCUR; sparms->keys.menu->keys[SB_SEL_KEY].bind.ch[0] = 'x'; } else{ clrbitn(SB_SUB_KEY, sparms->keys.bitmap); sparms->keys.menu->keys[SB_SEL_KEY].name = "S"; - sparms->keys.menu->keys[SB_SEL_KEY].label = "[Subscribe]"; + sparms->keys.menu->keys[SB_SEL_KEY].label = "[訂閱\]"; sparms->keys.menu->keys[SB_SEL_KEY].bind.cmd = MC_CHOICE; sparms->keys.menu->keys[SB_SEL_KEY].bind.ch[0] = 's'; } @@ -3348,7 +3348,7 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, - "Unsupported Select option"); + "未支援的選項"); return(0); } } @@ -3362,7 +3362,7 @@ */ switch(q){ case 'x': /* cancel */ - cmd_cancelled("Select command"); + cmd_cancelled("選取命令"); return(0); case 'c' : /* toggle current's selected state */ @@ -3373,11 +3373,11 @@ for(total = i = 0; i < n; i++) folder_entry(i, FOLDERS(context))->selected = old_tot == 0; - q_status_message4(SM_ORDER, 0, 2, - "%.200s%.200s folder%.200s %.200sselected", - old_tot ? "" : "All ", + q_status_message3(SM_ORDER, 0, 2, + "%.200s%.200s 個資料匣已被%.200s選擇", + old_tot ? "" : "全部 ", comatose(old_tot ? old_tot : n), - plural(old_tot ? old_tot : n), old_tot ? "UN" : ""); + old_tot ? "取消" : ""); return(1); case 't' : /* Text */ @@ -3394,7 +3394,7 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, - "Unsupported Select option"); + "未支援的選項"); return(0); } @@ -3428,34 +3428,31 @@ if(!(diff = (total = selected_folders(context)) - old_tot)){ if(narrow) - q_status_message4(SM_ORDER, 0, 2, - "%.200s. %.200s folder%.200s remain%.200s selected.", - j ? "No change resulted" - : "No messages in intersection", - comatose(old_tot), plural(old_tot), - (old_tot == 1L) ? "s" : ""); + q_status_message2(SM_ORDER, 0, 2, + "%.200s。 仍有 %.200s 個資料匣被選擇。", + j ? "沒有造成改變" + : "交點中沒有信件", + comatose(old_tot)); else if(old_tot && j) q_status_message(SM_ORDER, 0, 2, - "No change resulted. Matching folders already selected."); + "沒有造成改變。符合的資料匣已經被選擇了。"); else q_status_message1(SM_ORDER | SM_DING, 0, 2, - "Select failed! No %sfolders selected.", - old_tot ? "additional " : ""); + "選擇失敗!沒有%s資料匣被選擇。", + old_tot ? "額外的" : ""); } else if(old_tot){ sprintf(tmp_20k_buf, - "Select matched %ld folder%s. %s %sfolder%s %sselected.", + "選擇符合的 %ld 個資料匣!共計 %s 個資料匣被%s選擇。", (diff > 0) ? diff : old_tot + diff, - plural((diff > 0) ? diff : old_tot + diff), comatose((diff > 0) ? total : -diff), (diff > 0) ? "total " : "", - plural((diff > 0) ? total : -diff), - (diff > 0) ? "" : "UN"); + (diff > 0) ? "" : "取消"); q_status_message(SM_ORDER, 0, 2, tmp_20k_buf); } else - q_status_message2(SM_ORDER, 0, 2, "Select matched %.200s folder%.200s.", - comatose(diff), plural(diff)); + q_status_message1(SM_ORDER, 0, 2, "選擇符合的 %.200s 個資料匣。", + comatose(diff)); return(1); } @@ -3640,9 +3637,9 @@ fp->prev = context->dir; fp->status |= CNTXT_SUBDIR; context->dir = fp; - q_status_message2(SM_ORDER, 0, 3, "Now in %.200sdirectory: %.200s", + q_status_message2(SM_ORDER, 0, 3, "目前在 %.200s目錄中:%.200s", folder_total(FOLDERS(context)) - ? "" : "EMPTY ", fp->ref); + ? "" : "空的 ", fp->ref); rv++; } else @@ -3661,7 +3658,7 @@ char *p; /* Provide context in new collection header */ - sprintf(tmp_20k_buf, "Dir: %s", + sprintf(tmp_20k_buf, "目錄:%s", ((p = strstr(cntxt->context, "%s")) && !*(p+2) && !strncmp(fdp->ref, cntxt->context, p - cntxt->context)) ? fdp->ref + (p - cntxt->context) : fdp->ref); @@ -3709,12 +3706,12 @@ context->dir = fp; if(fp->status & CNTXT_SUBDIR) - q_status_message1(SM_ORDER, 0, 3, "Now in directory: %.200s", + q_status_message1(SM_ORDER, 0, 3, "目前所在目錄:%.200s", strsquish(tmp_20k_buf + 500, fp->ref, ps_global->ttyo->screen_cols - 22)); else q_status_message(SM_ORDER, 0, 3, - "Returned to collection's top directory"); + "回到總集的最上層目錄"); rv++; } @@ -4337,7 +4334,7 @@ if(readonly){ q_status_message(SM_ORDER,3,5, - "Cancelled: config file not editable"); + "已取消:無法編輯設定檔"); return(FALSE); } @@ -4438,7 +4435,7 @@ host_key[i].ch = ctrl('X'); host_key[i].rval = 12; host_key[i].name = "^X"; - host_key[i++].label = "Use Inbox Host"; + host_key[i++].label = "使用 Inbox 的主機"; } else{ host_key[i].ch = 0; @@ -4466,13 +4463,13 @@ host_key[i].label = NULL; if(maildrop) - sprintf(tmp, "Name of Mail Drop server : "); + sprintf(tmp, "Mail Drop 主機名:"); else if(maildropfolder) - sprintf(tmp, "Name of server to contain destination folder : "); + sprintf(tmp, "包含目的資料匣的主機名:"); else if(inbox) - sprintf(tmp, "Name of Inbox server : "); + sprintf(tmp, "Inbox 主機名:"); else - sprintf(tmp, "Name of server to contain added folder : "); + sprintf(tmp, "包含新增資料匣的主機名:"); help = NO_HELP; @@ -4598,8 +4595,8 @@ } else if(rc == 1){ q_status_message(SM_ORDER,0,2, - inbox ? "INBOX change cancelled" - : "Addition of new folder cancelled"); + inbox ? "取消修改 INBOX" + : "取消新增資料匣"); if(maildropfolder) fs_give((void **) &maildropfolder); @@ -4657,7 +4654,7 @@ def_in_prompt[0] ? "]" : ""); else if(inbox) sprintf(tmp, - "Folder on \"%.100s\" to use for INBOX%.5s%.100s%.5s : ", + "使用在 \"%.100s\" 上的資料匣作為 INBOX%.5s%.100s%.5s : ", short_str(add_folder, buf, 20, EndDots), def_in_prompt[0] ? " [" : "", short_str(def_in_prompt, buf2, 20, MidDots), @@ -4698,7 +4695,7 @@ def_in_prompt[0] ? "]" : ""); else sprintf(tmp, - "Folder name to add%.5s%.100s%.5s : ", + "新增資料匣名稱:%.5s%.100s%.5s : ", def_in_prompt[0] ? " [" : "", short_str(def_in_prompt, buf2, 20, MidDots), def_in_prompt[0] ? "]" : ""); @@ -4709,14 +4706,14 @@ p = NULL; if(isdir){ - add_key[0].label = "Create Folder"; + add_key[0].label = "建立資料匣"; if(tmp[0] == 'F') - rplstr(tmp, 6, "Directory"); + rplstr(tmp, 6, "目錄"); } else{ - add_key[0].label = "Create Directory"; + add_key[0].label = "建立目錄"; if(tmp[0] == 'D') - rplstr(tmp, 9, "Folder"); + rplstr(tmp, 9, "資料匣"); } flags = OE_APPEND_CURRENT; @@ -4746,10 +4743,10 @@ && add_folder[offset] == '.'){ if(cnt++ <= 0) q_status_message(SM_ORDER,3,3, - "Folder name can't begin with dot"); + "資料匣不能以點 \".\" 為名稱開頭"); else q_status_message1(SM_ORDER,3,3, - "Config feature \"%.200s\" enables names beginning with dot", + "設定檔中 \"%.200s\" 的功\能可使資料匣以點 \".\" 為名稱開頭", feature_list_name(F_ENABLE_DOT_FOLDERS)); display_message(NO_OP_COMMAND); @@ -4768,7 +4765,7 @@ } else if(*p == context->dir->delim){ q_status_message(SM_ORDER|SM_DING, 3, 3, - "Can't have trailing directory delimiters!"); + "不能有目錄尾端的分隔號 \"/\"!"); display_message('X'); continue; } @@ -4785,8 +4782,8 @@ } else if(rc == 1 || add_folder[0] == '\0') { q_status_message(SM_ORDER,0,2, - inbox ? "INBOX change cancelled" - : "Addition of new folder cancelled"); + inbox ? "取消修改 INBOX" + : "取消新增資料匣"); if(maildropfolder) fs_give((void **) &maildropfolder); @@ -4825,7 +4822,7 @@ help = NO_HELP; if(!inbox && context->use & CNTXT_INCMNG){ - sprintf(tmp, "Nickname for folder \"%.100s\" : ", &add_folder[offset]); + sprintf(tmp, "資料匣\"%.100s\" 的暱稱:", &add_folder[offset]); while(1){ int flags = OE_APPEND_CURRENT; @@ -4848,8 +4845,8 @@ } else if(rc == 1 || (rc != 3 && !*nickname)){ q_status_message(SM_ORDER,0,2, - inbox ? "INBOX change cancelled" - : "Addition of new folder cancelled"); + inbox ? "取消修改 INBOX" + : "取消新增資料匣"); if(maildropfolder) fs_give((void **) &maildropfolder); @@ -4881,7 +4878,7 @@ f = folder_entry(offset, FOLDERS(context)); if(!strucmp(FLDR_NAME(f), nickname[0] ? nickname : add_folder)){ q_status_message1(SM_ORDER | SM_DING, 0, 3, - "Incoming folder \"%.200s\" already exists", + "新進資料匣(Incoming folder) \"%s\" 已存在", nickname[0] ? nickname : add_folder); if(maildropfolder) fs_give((void **) &maildropfolder); @@ -5068,19 +5065,19 @@ } if(!inbox) - q_status_message1(SM_ORDER, 0, 3, "Folder \"%.200s\" created", + q_status_message1(SM_ORDER, 0, 3, "資料匣 \"%.200s\" 已建立", add_folder); return_val = add_folder; } else if(context_isambig(add_folder)){ free_folder_list(context); q_status_message2(SM_ORDER, 0, 3, "%.200s \"%.200s\" created", - isdir ? "Directory" : "Folder", add_folder); + isdir ? "目錄" : "資料匣", add_folder); return_val = add_folder; } else q_status_message1(SM_ORDER, 0, 3, - "Folder \"%.200s\" created outside current collection", + "資料匣 \"%.200s\" 建立於目前的總集之外", add_folder); if(maildropfolder) @@ -5137,13 +5134,13 @@ subscribe_keys[i = 0].ch = ctrl('T'); subscribe_keys[i].rval = 12; subscribe_keys[i].name = "^T"; - subscribe_keys[i++].label = "To All Grps"; + subscribe_keys[i++].label = "給所有的組群"; if(F_ON(F_ENABLE_TAB_COMPLETE,ps_global)){ subscribe_keys[i].ch = ctrl('I'); subscribe_keys[i].rval = 11; subscribe_keys[i].name = "TAB"; - subscribe_keys[i++].label = "Complete"; + subscribe_keys[i++].label = "完成"; } subscribe_keys[i].ch = -1; @@ -5205,7 +5202,7 @@ } else{ q_status_message(SM_ORDER, 0, 2, - "No group substring to match! Use ^T to list all news groups."); + "沒有符合的組群字串!請用 ^T 列出所有新聞組群。"); continue; } @@ -5259,10 +5256,10 @@ else{ if(rc == 12) q_status_message(SM_ORDER | SM_DING, 3, 3, - "No groups to select from!"); + "沒有可供選擇的組群!"); else q_status_message1(SM_ORDER, 3, 3, - "News group \"%.200s\" didn't match any existing groups", + "新聞組群 \"%.200s\" 不符合任何現存的組群", folder); free_folder_list(&subscribe_cntxt); @@ -5308,7 +5305,7 @@ if(rc < 0){ folder[0] = '\0'; /* make sure not to return partials */ if(rc == -1) - q_status_message(SM_ORDER, 0, 3, "Subscribe cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消訂閱\"); } else{ MAILSTREAM *sub_stream; @@ -5338,7 +5335,7 @@ */ q_status_message1(errors ?SM_INFO : SM_ORDER, errors ? 0 : 3, 3, - "Error subscribing to \"%.200s\"", + "訂閱\至 \"%.200s\" 時發生錯誤", (char *) flp->name); errors++; } @@ -5369,13 +5366,13 @@ if(n == 0) q_status_message(SM_ORDER | SM_DING, 3, 5, - "Subscriptions failed, subscribed to no new groups"); + "閱\失敗,沒有訂閱\任何新組群"); else q_status_message3(SM_ORDER | (errors ? SM_DING : 0), errors ? 3 : 0,3, - "Subscribed to %.200s new groups%.200s%.200s", + "訂閱\至 %.200s 個新組群%.200s%.200s", comatose((long)n), - errors ? ", failed on " : "", + errors ? ",發生錯誤於 " : "", errors ? comatose((long)errors) : ""); free_strlist(&folders); @@ -5386,7 +5383,7 @@ SIZEOF_20KBUF); if(mail_subscribe(sub_stream, tmp_20k_buf) == 0L){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Error subscribing to \"%.200s\"", folder); + "訂閱\至 \"%.200s\" 時發生錯誤", folder); errors++; } else if(ALL_FOUND(cntxt)){ @@ -5403,13 +5400,13 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Error subscribing to \"%.200s\"", folder); + "訂閱\至 \"%.200s\" 時發生錯誤", folder); errors++; } } if(!errors && folder[0]) - q_status_message1(SM_ORDER, 0, 3, "Subscribed to \"%.200s\"", folder); + q_status_message1(SM_ORDER, 0, 3, "訂閱\至 \"%.200s\"", folder); } free_fdir(&subscribe_cntxt.dir, 1); @@ -5454,18 +5451,18 @@ if(NEWS_TEST(context)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Can't rename news groups!"); + "無法更改新聞組群的名稱!"); return(0); } else if(!folder_total(FOLDERS(context))){ q_status_message(SM_ORDER | SM_DING, 0, 4, - "Empty folder collection. No folder to rename!"); + "空的資料匣總集。沒有可供更名的資料匣!"); return(0); } else if((new_f = folder_entry(index, FOLDERS(context))) && !strucmp(FLDR_NAME(new_f), ps_global->inbox_name)) { q_status_message1(SM_ORDER | SM_DING, 3, 4, - "Can't change special folder name \"%.200s\"", + "無法更改特殊資料匣 \"%.200s\" 的名稱", ps_global->inbox_name); return(0); } @@ -5508,11 +5505,11 @@ ren_cur = strcmp(folder, ps_global->cur_folder) == 0; - sprintf(prompt, "Rename %.20s to : ", + sprintf(prompt, "將 %.20s 更名為:", (context->use & CNTXT_INCMNG) - ? "nickname" + ? "暱稱" : (isdir = new_f->isdir) - ? "directory" : "folder"); + ? "目錄" : "資料匣"); help = NO_HELP; strncpy(new_name, folder, len-1); new_name[len-1] = '\0'; @@ -5533,10 +5530,10 @@ if(F_OFF(F_ENABLE_DOT_FOLDERS,ps_global) && *new_name == '.'){ if(cnt++ <= 0) q_status_message(SM_ORDER,3,3, - "Folder name can't begin with dot"); + "資料匣不能以點 \".\" 為名稱開頭"); else q_status_message1(SM_ORDER,3,3, - "Config feature \"%.200s\" enables names beginning with dot", + "設定檔中 \"%.200s\" 的功\能可使資料匣以點 \".\" 為名稱開頭", feature_list_name(F_ENABLE_DOT_FOLDERS)); display_message(NO_OP_COMMAND); @@ -5545,13 +5542,13 @@ if(folder_index(new_name, context, FI_ANY|FI_RENAME) >= 0){ q_status_message1(SM_ORDER, 3, 3, - "Folder \"%.200s\" already exists", + "資料匣 \"%.200s\" 已存在", pretty_fn(new_name)); display_message(NO_OP_COMMAND); continue; } else if(!strucmp(new_name, ps_global->inbox_name)){ - q_status_message1(SM_ORDER, 3, 3, "Can't rename folder to %.200s", + q_status_message1(SM_ORDER, 3, 3, "無法將資料匣更名至 %.200s", ps_global->inbox_name); display_message(NO_OP_COMMAND); continue; @@ -5574,7 +5571,7 @@ if(rc == 1 || !(*new_name || (context->use & CNTXT_INCMNG)) || !strcmp(new_name, folder)){ - q_status_message(SM_ORDER, 0, 2, "Folder rename cancelled"); + q_status_message(SM_ORDER, 0, 2, "取消資料匣更名"); return(0); } @@ -5653,7 +5650,7 @@ /* renaming sent-mail or saved-messages */ if(context_create(context, NULL, folder)){ q_status_message3(SM_ORDER,0,3, - "Folder \"%.200s\" renamed to \"%.200s\". New \"%.200s\" created", + "資料匣 \"%.200s\" 名稱改為 \"%.200s\"。建立新的 \"%.200s\"", folder, new_name, pretty_fn( (strcmp(ps_global->VAR_DEFAULT_SAVE_FOLDER, @@ -5664,7 +5661,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 4, - "Error creating new \"%.200s\"", folder); + "建立新的資料匣 \"%.200s\" 時發生錯誤", folder); dprint(1, (debugfile, "Error creating \"%s\" in %s context\n", folder ? folder : "?", @@ -5673,7 +5670,7 @@ } else q_status_message2(SM_ORDER, 0, 3, - "Folder \"%.200s\" renamed to \"%.200s\"", + "資料匣 \"%.200s\" 名稱改為 \"%.200s\"", pretty_fn(folder), pretty_fn(new_name)); free_folder_list(context); @@ -5721,7 +5718,7 @@ } if(NEWS_TEST(context)){ - static char fmt[] = "Really unsubscribe from \"%.*s\""; + static char fmt[] = "確定自 \"%.*s\" 中解除訂閱\嗎"; folder = folder_entry(index, FOLDERS(context))->name; /* 4 is strlen("%.*s") */ @@ -5745,7 +5742,7 @@ (void) context_apply(tmp_20k_buf, context, folder, SIZEOF_20KBUF); if(!mail_unsubscribe(sub_stream, tmp_20k_buf)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Error unsubscribing from \"%.200s\"",folder); + "自 \"%.200s\" 取消訂閱\時發生錯誤", folder); if(unsub_opened) pine_mail_close(sub_stream); return(0); @@ -5807,7 +5804,7 @@ } else if(readonly && (context->use & CNTXT_INCMNG)){ q_status_message(SM_ORDER,3,5, - "Deletion cancelled: folder not in editable config file"); + "已取消刪除:信件匣不在可編輯的設定檔中"); return(0); } else if((fp->name @@ -5832,7 +5829,7 @@ if(ret){ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Can't delete non-empty directory \"%.200s\"%.200s.", + "無法刪除有資料的目錄 \"%.200s\"%.200s.", folder, (fp->isfolder && fp->isdual) ? " (or folder of same name)" : ""); return(0); } @@ -5843,19 +5840,19 @@ */ if(fp->isdual && (ret = want_to(DIR_FOLD_PMT,'n','x',NO_HELP,WT_NORM)) != 'y'){ - q_status_message(SM_ORDER,0,3, (ret == 'x') ? "Delete cancelled" - : "No folder deleted"); + q_status_message(SM_ORDER,0,3, (ret == 'x') ? "取消刪除" + : "沒有任何資料匣被刪除"); return(0); } } if(context->use & CNTXT_INCMNG){ static ESCKEY_S delf_opts[] = { - {'n', 'n', "N", "Nickname only"}, - {'b', 'b', "B", "Both Folder and Nickname"}, + {'n', 'n', "N", "僅有暱稱"}, + {'b', 'b', "B", "資料匣與暱稱"}, {-1, 0, NULL, NULL} }; -#define DELF_PROMPT "DELETE only Nickname or Both nickname and folder? " +#define DELF_PROMPT "刪除「僅有暱稱」或「資料匣與暱稱」?" switch(radio_buttons(DELF_PROMPT, -FOOTER_ROWS(ps_global), delf_opts,'n','x',NO_HELP,RB_NORM, NULL)){ @@ -5864,7 +5861,7 @@ break; case 'x' : - cmd_cancelled("Delete"); + cmd_cancelled("刪除"); return(0); default : @@ -5872,15 +5869,15 @@ } } else{ - sprintf(ques_buf, "DELETE \"%.100s\"%s", folder, - close_opened ? " (the currently open folder)" : + sprintf(ques_buf, "刪除 \"%.100s\"%s", folder, + close_opened ? " (目前開啟的資料匣)" : (fp->isdir && !(fp->isdual || fp->isfolder || (folder_index(folder, context, FI_FOLDER) >= 0))) - ? " (a directory)" : ""); + ? " (目錄)" : ""); if((ret = want_to(ques_buf, 'n', 'x', NO_HELP, WT_NORM)) != 'y'){ - q_status_message(SM_ORDER,0,3, (ret == 'x') ? "Delete cancelled" - : "Nothing deleted"); + q_status_message(SM_ORDER,0,3, (ret == 'x') ? "取消刪除" + : "沒有任何資料匣遭刪除"); return(0); } } @@ -5916,17 +5913,17 @@ /* * BUG: what if sent-mail or saved-messages???? */ - q_status_message1(SM_ORDER,3,3,"Delete of \"%.200s\" Failed!", folder); + q_status_message1(SM_ORDER,3,3,"刪除 \"%.200s\" 失敗!", folder); return(0); } } - sprintf(buf, "%.50s\"%.200s\" deleted.", - !blast_folder ? "Nickname " : - fp->isdual ? "Folder/Directory " : - (fp->isdir && fp->isfolder) ? "Folder " : - fp->isdir ? "Directory " : - "Folder ", + sprintf(buf, "%.50s\"%.200s\" 已刪除。", + !blast_folder ? "暱稱 " : + fp->isdual ? "資料匣/目錄 " : + (fp->isdir && fp->isfolder) ? "資料匣 " : + fp->isdir ? "目錄 " : + "資料匣 ", folder); q_status_message(SM_ORDER, 0, 3, buf); @@ -6068,7 +6065,7 @@ int flags; pat[0] = '\0'; - sprintf(prompt, "String in folder %.100s to match : ", kind); + sprintf(prompt, "資料匣 %.100s 中欲符合的字串:", kind); while(1){ flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP; @@ -6086,7 +6083,7 @@ return(1); case 1 : - cmd_cancelled("Select"); + cmd_cancelled("選擇"); default : return(0); @@ -6165,7 +6162,7 @@ return(1); } - cmd_cancelled("Select"); + cmd_cancelled("選擇"); return(0); } @@ -6196,7 +6193,7 @@ char *folder, *ref = NULL, tmp[MAILTMPLEN]; folder = f->name; - sprintf(tmp, "Scanning \"%.40s\"", FLDR_NAME(f)); + sprintf(tmp, "正在掃描 \"%.40s\"", FLDR_NAME(f)); we_cancel = busy_alarm(1, tmp, NULL, 0); mm_list_info = &ldata; /* tie down global reference */ @@ -6349,7 +6346,7 @@ return(1); } - cmd_cancelled("Select"); + cmd_cancelled("選擇"); return(0); } @@ -6371,7 +6368,7 @@ while(1){ flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP; sprintf(number, "%ld", *count); - sprintf(prompt, "Select folders with messages %.20s : ", tense[*cmp]); + sprintf(prompt, "選擇有信件 %.20s 的資料匣:", tense[*cmp]); r = optionally_enter(number, -FOOTER_ROWS(ps_global), 0, sizeof(number), prompt, sel_num_opt, NO_HELP, &flags); switch (r){ @@ -6380,7 +6377,7 @@ break; else if((*count = atol(number)) < 0L) q_status_message(SM_ORDER, 3, 3, - "Can't have NEGATIVE message count!"); + "不可有「負的」信件數量!"); else return(1); /* success */ @@ -6548,7 +6545,7 @@ for(; i >= 0; i--) folder_entry(i, FOLDERS(context))->scanned = 0; - cmd_cancelled("Select"); + cmd_cancelled("選擇"); rv = 0; break; } @@ -7531,7 +7528,7 @@ if(p = context_digest(c_string, dcontext, host, rcontext, view, MAXPATH)){ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Bad context, %.200s : %.200s", p, c_string); + "錯誤的內容,%.200s:%.200s", p, c_string); fs_give((void **) &c_string); if(nickname) fs_give((void **)&nickname); @@ -7572,14 +7569,14 @@ /* fix up label */ if(NEWS_TEST(c)){ - sprintf(tmp_20k_buf, "%sews groups%s%.100s", - (*host) ? "N" : "Local n", (*host) ? " on " : "", + sprintf(tmp_20k_buf, "%s聞組群%s%.100s", + (*host) ? "新" : "本地的新", (*host) ? " 於 " : "", (*host) ? host : ""); } else{ p = srchstr(rcontext, "[]"); - sprintf(tmp_20k_buf, "%solders%s%.100s in %.*s%s", - (*host) ? "F" : "Local f", (*host) ? " on " : "", + sprintf(tmp_20k_buf, "%s料匣%s%.100s在 %.*s%s", + (*host) ? "資" : "本地的資", (*host) ? " 於 " : "", (*host) ? host : "", p ? min(p - rcontext, 100) : 0, rcontext, (p && (p - rcontext) > 0) ? "" : "home directory"); @@ -9211,7 +9208,7 @@ if(error && num_in_error){ cnt_errs = num_in_error; memset((void *)ng_error, 0, sizeof(ng_error)); - sprintf(ng_error, "Unknown news group%s: ", plural(num_in_error)); + sprintf(ng_error, "未知的新聞組群:"); ep = ng_error + strlen(ng_error); } for(ntmp = nglist; ntmp; ntmp = ntmp->next){ --- pine/filter.c.orig Tue Aug 30 08:08:19 2005 +++ pine/filter.c Fri Oct 7 21:53:29 2005 @@ -3064,7 +3064,7 @@ #endif #ifndef SYSTEM_PINE_INFO_PATH -#define SYSTEM_PINE_INFO_PATH "/usr/local/lib/pine.info" +#define SYSTEM_PINE_INFO_PATH "/usr/local/etc/pine.info" #endif #define CHTML_VAR_EXPAND(S) (!strcmp(S, "PINE_INFO_PATH") \ ? SYSTEM_PINE_INFO_PATH : S) @@ -5473,7 +5473,7 @@ } else if(!strcmp(s, "PINE_CONF_PATH")){ #if defined(_WINDOWS) || !defined(SYSTEM_PINERC) - p = "/usr/local/lib/pine.conf"; + p = "/usr/local/etc/pine.conf"; #else p = SYSTEM_PINERC; #endif @@ -5482,7 +5482,7 @@ #ifdef SYSTEM_PINERC_FIXED p = SYSTEM_PINERC_FIXED; #else - p = "/usr/local/lib/pine.conf.fixed"; + p = "/usr/local/etc/pine.conf.fixed"; #endif } else if(!strcmp(s, "PINE_INFO_PATH")){ --- pine/adrbkcmd.c.orig Wed Sep 28 05:27:55 2005 +++ pine/adrbkcmd.c Fri Oct 7 21:53:28 2005 @@ -116,23 +116,23 @@ static struct key abook_view_keys[] = {HELP_MENU, OTHER_MENU, - {"<","Abook",{MC_EXIT,2,{'<',','}},KS_NONE}, - {"U","Update",{MC_EDIT,1,{'u'}},KS_NONE}, - {"C","ComposeTo",{MC_COMPOSE,1,{'c'}},KS_COMPOSER}, + {"<","地址簿",{MC_EXIT,2,{'<',','}},KS_NONE}, + {"U","更新",{MC_EDIT,1,{'u'}},KS_NONE}, + {"C","編修",{MC_COMPOSE,1,{'c'}},KS_COMPOSER}, RCOMPOSE_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, PRYNTTXT_MENU, WHEREIS_MENU, - {"F", "Fwd Email", {MC_FORWARD, 1, {'f'}}, KS_FORWARD}, + {"F", "信件轉寄", {MC_FORWARD, 1, {'f'}}, KS_FORWARD}, SAVE_MENU, HELP_MENU, OTHER_MENU, - {"V","ViewLink",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, + {"V","檢視鏈結",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, NULL_MENU, - {"^B","PrevLink",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, - {"^F","NextLink",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, + {"^B","前一鏈結",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, + {"^F","下一鏈結",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -145,7 +145,7 @@ static struct key abook_text_keys[] = {HELP_MENU, NULL_MENU, - {"E","Exit Viewer",{MC_EXIT,1,{'e'}},KS_NONE}, + {"E","離開",{MC_EXIT,1,{'e'}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -154,7 +154,7 @@ PRYNTTXT_MENU, WHEREIS_MENU, FWDEMAIL_MENU, - {"S", "Save", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; + {"S", "存檔", {MC_SAVETEXT,1,{'s'}}, KS_SAVE}}; INST_KEY_MENU(abook_text_km, abook_text_keys); #define VIEW_ABOOK_NONE 0 @@ -326,7 +326,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(out_store); sargs.text.src = CharStar; - sargs.text.desc = "expanded entry"; + sargs.text.desc = "已展開的項目"; sargs.text.handles = handles; if(offset){ /* resize? preserve paging! */ @@ -335,13 +335,13 @@ offset = 0L; } - sargs.bar.title = "ADDRESS BOOK (View)"; + sargs.bar.title = "地址簿(檢視)"; sargs.bar.style = TextPercent; sargs.proc.tool = process_abook_view_cmd; sargs.proc.data.i = VIEW_ABOOK_NONE; sargs.resize_exit = 1; sargs.help.text = h_abook_view; - sargs.help.title = "HELP FOR ADDRESS BOOK VIEW"; + sargs.help.title = "檢視地址簿的輔助說明"; sargs.keys.menu = &abook_view_keymenu; setbitmap(sargs.keys.bitmap); @@ -457,7 +457,7 @@ if(adrbk_check_all_validity_now()){ if(resync_screen(pab, AddrBookScreen, 0)){ q_status_message(SM_ORDER | SM_DING, 3, 4, - "Address book changed. Update cancelled. Try again."); + "地址簿已被更動。取消更新。請重試一遍。"); ps_global->mangled_screen = 1; break; } @@ -485,7 +485,7 @@ abe_copy = copy_ae(abe); dprint(9, (debugfile,"Calling edit_entry to edit from view\n")); edit_entry(pab->address_book, abe_copy, entry, - abe->tag, 0, &warped, "update"); + abe->tag, 0, &warped, "更新"); /* * The ABOOK_EDITED case doesn't mean that we necessarily * changed something, just that we might have but we know @@ -535,7 +535,7 @@ h_ab_text_or_vcard, RB_NORM, NULL); switch(i){ case 'x': - cancel_warning(NO_DING, "forward"); + cancel_warning(NO_DING, "轉寄"); rv = 0; break; @@ -771,8 +771,8 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = CharStar; - sargs.text.desc = "expanded entry"; - sargs.bar.title = "ADDRESS BOOK (Rich View)"; + sargs.text.desc = "已展開的項目"; + sargs.bar.title = "地址簿 (完整檢視)"; sargs.bar.style = TextPercent; sargs.keys.menu = &abook_text_km; setbitmap(sargs.keys.bitmap); @@ -842,8 +842,8 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = src; - sargs.text.desc = "expanded entry"; - sargs.bar.title = "MESSAGE TEXT"; + sargs.text.desc = "已展開的項目"; + sargs.bar.title = "訊息文字"; sargs.bar.style = TextPercent; sargs.keys.menu = &abook_text_km; setbitmap(sargs.keys.bitmap); @@ -866,19 +866,19 @@ */ static struct headerentry headents_for_edit[]={ {"Nickname : ", "Nickname", h_composer_abook_nick, 12, 0, NULL, - verify_nick, NULL, NULL, addr_book_nick_for_edit, "To AddrBk", NULL, + verify_nick, NULL, NULL, addr_book_nick_for_edit, "地址簿", NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, {"Fullname : ", "Fullname", h_composer_abook_full, 12, 0, NULL, - NULL, NULL, NULL, view_message_for_pico, "To Message", NULL, + NULL, NULL, NULL, view_message_for_pico, "資料匣", NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, {"Fcc : ", "FileCopy", h_composer_abook_fcc, 12, 0, NULL, - NULL, NULL, NULL, folders_for_fcc, "To Fldrs", NULL, + NULL, NULL, NULL, folders_for_fcc, "資料匣", NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, {"Comment : ", "Comment", h_composer_abook_comment, 12, 0, NULL, - NULL, NULL, NULL, view_message_for_pico, "To Message", NULL, + NULL, NULL, NULL, view_message_for_pico, "資料匣", NULL, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, {"Addresses : ", "Addresses", h_composer_abook_addrs, 12, 0, NULL, - verify_addr, NULL, NULL, addr_book_change_list, "To AddrBk", NULL, + verify_addr, NULL, NULL, addr_book_change_list, "地址簿", NULL, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, {NULL, NULL, NO_HELP, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE} @@ -987,8 +987,8 @@ pbf.canceltest = warped ? pico_cancel_for_adrbk_edit : pico_cancel_for_adrbk_take; pbf.expander = expand_addrs_for_pico; - pbf.ctrlr_label = "RichView"; - sprintf(titlebar, "ADDRESS BOOK (%c%.20s)", + pbf.ctrlr_label = "完整表頭"; + sprintf(titlebar, "地址簿 (%c%.20s)", readonly ? 'V' : islower((unsigned char)(*cmd)) ? toupper((unsigned char)*cmd) : *cmd, @@ -1607,12 +1607,12 @@ ps_global->redrawer = redraw_pico; fix_windsize(ps_global); - switch(want_to("Exit and save changes ", 'y', 0, NO_HELP, WT_NORM)){ + switch(want_to("存檔並離開 ", 'y', 0, NO_HELP, WT_NORM)){ case 'y': break; case 'n': - rstr = "Use ^C to abandon changes you've made"; + rstr = "以 ^C 放棄曾做過的改變"; break; } @@ -1636,8 +1636,8 @@ char *rstr = NULL; void (*redraw)() = ps_global->redrawer; - strncat(strncat(strncpy(prompt, "Cancel ", 10), word, 20), - " (answering \"Yes\" will abandon any changes made) ", 60); + strncat(strncat(strncpy(prompt, "取消", 10), word, 20), + " (回答 \"是\" 將放棄曾作過的改變) ", 60); ps_global->redrawer = redraw_pico; fix_windsize(ps_global); @@ -1660,7 +1660,7 @@ pico_cancel_for_adrbk_take(redraw_pico) void (*redraw_pico)(); { - return(pico_cancelexit_for_adrbk("take", redraw_pico)); + return(pico_cancelexit_for_adrbk("擷取", redraw_pico)); } @@ -1668,7 +1668,7 @@ pico_cancel_for_adrbk_edit(redraw_pico) void (*redraw_pico)(); { - return(pico_cancelexit_for_adrbk("changes", redraw_pico)); + return(pico_cancelexit_for_adrbk("修改", redraw_pico)); } @@ -1788,8 +1788,8 @@ if(ps_global->readonly_pinerc){ q_status_message1(SM_ORDER, 0, 3, - "%s cancelled: config file not changeable", - edit ? "Change" : "Add"); + "取消%s:設定檔無法被修改", + edit ? "修改" : "新增"); return -1; } @@ -1798,8 +1798,8 @@ if(global && vars[V_GLOB_ADDRBOOK].is_fixed || !global && vars[V_ADDRESSBOOK].is_fixed){ q_status_message1(SM_ORDER, 0, 3, - "Cancelled: Sys. Mgmt. does not allow changing %saddress books", - global ? "global " : ""); + "動作取消:系統管理員不允許\改變%s地址簿", + global ? "整體的 " : ""); return -1; } @@ -1825,7 +1825,7 @@ standard_picobuf_setup(&pbf); pbf.exittest = pico_sendexit_for_adrbk; pbf.canceltest = pico_cancel_for_adrbk_edit; - sprintf(titlebar, "%s ADDRESS BOOK", edit ? "CHANGE" : "ADD"); + sprintf(titlebar, "%s地址簿", edit ? "修改" : "新增"); pbf.pine_anchor = set_titlebar(titlebar, ps_global->mail_stream, ps_global->context_current, @@ -1944,8 +1944,8 @@ if(editor_result & COMP_CANCEL){ ret = -1; q_status_message1(SM_ORDER, 0, 3, - "Address book %s is cancelled", - edit ? "change" : "add"); + "取消地址簿的%s", + edit ? "修改" : "新增"); } else if(editor_result & COMP_EXIT){ if(edit && @@ -1954,8 +1954,8 @@ !strcmp(nickname, def_nick ? def_nick : "")){ ret = -1; q_status_message1(SM_ORDER, 0, 3, - "No change: Address book %s is cancelled", - edit ? "change" : "add"); + "沒有改變:取消地址簿的%s", + edit ? "修改" : "新增"); } else{ if(global){ @@ -2011,8 +2011,8 @@ if(!new_item || *new_item == '\0'){ q_status_message1(SM_ORDER, 0, 3, - "Address book %s is cancelled", - edit ? "change" : "add"); + "取消地址簿的%s", + edit ? "修改" : "新增"); ret = -1; goto get_out; } @@ -2037,8 +2037,8 @@ if(set_variable_list(global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK, new_list, TRUE, ew)){ q_status_message1(SM_ORDER, 0, 3, - "%s cancelled: couldn't save pine configuration file", - edit ? "Change" : "Add"); + "取消%s:無法存入 pine 的設定檔", + edit ? "修改" : "新增"); set_current_val(&vars[global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK], TRUE, FALSE); @@ -2784,7 +2784,7 @@ if(ps_global->readonly_pinerc){ if(err) - *err = "Delete cancelled: config file not changeable"; + *err = "取消刪除:設定檔無法被改變"; return -1; } @@ -2802,10 +2802,10 @@ if(err){ if(pab->type & GLOBAL) *err = - "Cancelled: Sys. Mgmt. does not allow changing global address book config"; + "動作取消:系統管理員不允許\改變整體的地址簿設定"; else *err = - "Cancelled: Sys. Mgmt. does not allow changing address book config"; + "動作取消:系統管理員不允許\改變地址簿設定"; } return -1; @@ -2859,8 +2859,8 @@ if(cnt > 1){ static ESCKEY_S opts[] = { - {'i', 'i', "I", "Ignore All"}, - {'r', 'r', "R", "Remove One"}, + {'i', 'i', "I", "忽略全部"}, + {'r', 'r', "R", "移除一個"}, {-1, 0, NULL, NULL}}; sprintf(tmp, @@ -2878,7 +2878,7 @@ case 'x': if(err) - *err = "Delete cancelled"; + *err = "取消刪除"; return -1; } @@ -2889,7 +2889,7 @@ case 'n': case 'x': if(err) - *err = "Delete cancelled"; + *err = "取消刪除"; return -1; @@ -2934,7 +2934,7 @@ case 'x': /* Cancel */ default: if(err) - *err = "Delete cancelled"; + *err = "取消刪除"; return -1; } @@ -2954,7 +2954,7 @@ case 'x': default: if(err) - *err = "Delete cancelled"; + *err = "取消刪除"; return -1; @@ -3015,7 +3015,7 @@ case 'n': default: if(err) - *err = "Delete cancelled"; + *err = "取消刪除"; return -1; } @@ -3175,7 +3175,7 @@ /* this also frees old variable contents for us */ if(set_variable_list(varnum, new_list, TRUE, ew)){ if(err) - *err = "Delete cancelled: couldn't save pine configuration file"; + *err = "取消刪除:無法存入 pine 的設定檔"; set_current_val(&vars[varnum], TRUE, FALSE); free_list_array(&new_list); @@ -3242,7 +3242,7 @@ if(ps_global->readonly_pinerc){ if(msg) - *msg = cpystr("Shuffle cancelled: config file not changeable"); + *msg = cpystr("取消重整:設定檔無法被改變"); return -1; } @@ -3252,12 +3252,12 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; - opts[i++].label = "Up"; + opts[i++].label = "上移"; opts[i].ch = 'd'; opts[i].rval = 'd'; opts[i].name = "D"; - opts[i++].label = "Down"; + opts[i++].label = "下移"; opts[i].ch = -1; deefault = 'u'; @@ -3265,7 +3265,7 @@ if(pab->type & GLOBAL){ if(vars[V_GLOB_ADDRBOOK].is_fixed){ if(msg) - *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing global address book config"); + *msg = cpystr("動作取消:系統管理員不允許\改變整體的地址簿設定"); return -1; } @@ -3285,7 +3285,7 @@ else{ if(vars[V_ADDRESSBOOK].is_fixed){ if(msg) - *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing address book config"); + *msg = cpystr("動作取消:系統管理員不允許\改變地址簿設定"); return -1; } @@ -3324,7 +3324,7 @@ if(rv == 'x'){ if(msg) - *msg = cpystr("Shuffle cancelled"); + *msg = cpystr("取消重整"); return -1; } @@ -3369,7 +3369,7 @@ struct variable *vars = ps_global->vars; char **lval; EditWhich ew; - char *cancel_msg = "Shuffle cancelled: couldn't save configuration file"; + char *cancel_msg = "取消重整:無法存入設定檔"; dprint(5, (debugfile, "- do_the_shuffle(%d, %d) -\n", anum1, anum2)); @@ -3386,7 +3386,7 @@ if(type1 == Empty){ if(msg) *msg = - cpystr("Shuffle cancelled: highlight entry you wish to shuffle"); + cpystr("取消重整:請先標示欲重整的項目"); return(retval); } @@ -3403,14 +3403,14 @@ if((type1 == Pers || type2 == Pers) && vars[V_ADDRESSBOOK].is_fixed){ if(msg) - *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing address book configuration"); + *msg = cpystr("動作取消:系統管理員不允許\改變地址簿設定"); return(retval); } if((type1 == Glob || type2 == Glob) && vars[V_GLOB_ADDRBOOK].is_fixed){ if(msg) - *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing global address book config"); + *msg = cpystr("動作取消:系統管理員不允許\改變整體的地址簿設定"); return(retval); } @@ -3855,7 +3855,7 @@ if(allow_role){ /* Setup role */ if(role_select_screen(ps_global, &role, MC_COMPOSE) < 0){ - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); ps_global->next_screen = prev_screen; ps_global->redrawer = redraw; return; @@ -3916,7 +3916,7 @@ AdrBk_Entry *abe; VCARD_INFO_S *vinfo; static ESCKEY_S ab_export_opts[] = { - {ctrl('T'), 10, "^T", "To Files"}, + {ctrl('T'), 10, "^T", "檔案列表"}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; static ESCKEY_S vcard_or_addresses[] = { @@ -3949,7 +3949,7 @@ switch(i){ case 'x': - cancel_warning(NO_DING, "export"); + cancel_warning(NO_DING, "匯出"); return(ret); case 'a': @@ -3982,7 +3982,7 @@ ab_export_opts[++r].ch = ctrl('I'); ab_export_opts[r].rval = 11; ab_export_opts[r].name = "TAB"; - ab_export_opts[r].label = "Complete"; + ab_export_opts[r].label = "完成"; } ab_export_opts[++r].ch = -1; @@ -3995,7 +3995,7 @@ if(r < 0){ switch(r){ case -1: - cancel_warning(NO_DING, "export"); + cancel_warning(NO_DING, "匯出"); break; case -2: @@ -4307,7 +4307,7 @@ role = combine_inherited_role(role); else{ /* cancel */ role = NULL; - cmd_cancelled("Composition"); + cmd_cancelled("編輯文章"); goto bomb; } } @@ -4420,7 +4420,7 @@ switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward,WT_NORM)){ case 'x': gf_clear_so_writec((STORE_S *) pb->contents.text.data); - cancel_warning(NO_DING, "forward"); + cancel_warning(NO_DING, "轉寄"); goto bomb; case 'y': @@ -4504,7 +4504,7 @@ gf_clear_so_writec((STORE_S *) pb->contents.text.data); - pine_send(outgoing, &body, "FORWARDING ADDRESS BOOK ENTRY", role, NULL, + pine_send(outgoing, &body, "轉寄地址簿項目", role, NULL, NULL, NULL, NULL, NULL, 0); ps->mangled_screen = 1; @@ -5051,8 +5051,8 @@ char tmp[max(200,2*MAX_NICKNAME+80)]; ACTION_LIST_S *action_list = NULL, *al; static ESCKEY_S save_or_export[] = { - {'s', 's', "S", "Save"}, - {'e', 'e', "E", "Export"}, + {'s', 's', "S", "存檔"}, + {'e', 'e', "E", "匯出"}, {-1, 0, NULL, NULL}}; sprintf(tmp, "Save%.20s to address book or Export to filesystem ? ", @@ -5063,7 +5063,7 @@ h_ab_save_exp, RB_NORM, NULL); switch(i){ case 'x': - cancel_warning(NO_DING, "save"); + cancel_warning(NO_DING, "存檔"); return(0); case 'e': @@ -5252,7 +5252,7 @@ if(action_list) fs_give((void **)&action_list); - cancel_warning(NO_DING, "save"); + cancel_warning(NO_DING, "存檔"); return(ret); } @@ -5433,7 +5433,7 @@ q_status_message(SM_ORDER | SM_DING, 3, 4, "Save only partially completed"); else - cancel_warning(NO_DING, "save"); + cancel_warning(NO_DING, "存檔"); } else if (how_many_to_copy + how_many_no_action - (skip_dups ? how_many_dups : 0) > 0){ @@ -5514,11 +5514,11 @@ curopen = cur_is_open(); if(!agg && curopen){ static ESCKEY_S prt[] = { - {'a', 'a', "A", "AddressBook"}, - {'e', 'e', "E", "Entry"}, + {'a', 'a', "A", "地址簿"}, + {'e', 'e', "E", "項目"}, {-1, 0, NULL, NULL}}; - prompt = "Print Address Book or just this Entry? "; + prompt = "列印整個地址簿或是只印這個項目?"; switch(radio_buttons(prompt, -FOOTER_ROWS(ps_global), prt, 'a', 'x', NO_HELP, RB_NORM, NULL)){ case 'x' : @@ -5536,10 +5536,10 @@ } } - prompt = agg ? "selected entries " - : !curopen ? "address book list " - : do_entry ? "entry " - : "address book "; + prompt = agg ? "已選擇的項目 " + : !curopen ? "地址簿列表 " + : do_entry ? "項目 " + : "地址簿 "; if(open_printer(prompt) == 0){ DL_CACHE_S dlc_buf, *match_dlc; @@ -5593,7 +5593,7 @@ switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward, WT_NORM)){ case 'x': - cancel_warning(NO_DING, "print"); + cancel_warning(NO_DING, "列印"); ps_global->mangled_footer = 1; return 0; @@ -5884,7 +5884,7 @@ if(F_ON(F_CMBND_ABOOK_DISP,ps_global)) lineno = 0L - XTRA_TITLE_LINES_IN_OLD_ABOOK_DISP; else{ - print_text1(" ADDRESS BOOK %s\n\n", + print_text1(" 地址簿 %s\n\n", as.adrbks[as.cur].nickname); lineno = 0L; } @@ -5950,7 +5950,7 @@ dprint(2, (debugfile, "- ab_agg_delete -\n")); if(agg){ - sprintf(prompt, "Really delete %d selected entries", as.selections); + sprintf(prompt, "確定刪除 %d 選取的項目", as.selections); ch = want_to(prompt, 'n', 'n', NO_HELP, WT_NORM); if(ch == 'y'){ adrbk_cntr_t newelnum, flushelnum = NO_NEXT; @@ -6118,7 +6118,7 @@ } } else - cmd_cancelled("Apply Delete command"); + cmd_cancelled("套用刪除命令"); } return(ret); @@ -6167,7 +6167,7 @@ SIZEOF_20KBUF, abe->fullname, NULL) : abe->nickname ? abe->nickname : ""; - cmd = "Really delete \"%.100s\""; + cmd = "確定刪除 \"%.100s\""; break; case ListHead: @@ -6176,14 +6176,14 @@ SIZEOF_20KBUF, abe->fullname, NULL) : abe->nickname ? abe->nickname : ""; - cmd = "Really delete ENTIRE list \"%.100s\""; + cmd = "確定刪除「整個」列表 \"%.100s\""; break; case ListEnt: dname = (char *)rfc1522_decode((unsigned char *)tmp_20k_buf, SIZEOF_20KBUF, listmem_from_dl(abook, dl), NULL); - cmd = "Really delete \"%.100s\" from list"; + cmd = "確定自列表中刪除 \"%.100s\""; break; } @@ -6284,7 +6284,7 @@ return 0; } else{ - q_status_message(SM_INFO, 0, 2, "Entry not deleted"); + q_status_message(SM_INFO, 0, 2, "該項目未被刪除"); return 0; } } @@ -6420,7 +6420,7 @@ if(r == 1 || r != 10 && fbuf[0] == '\0'){ ps->mangled_footer = 1; if(error) - *error = cpystr("Cancelled"); + *error = cpystr("取消"); return(ret); } @@ -6439,7 +6439,7 @@ pbf.ctrlr_label = "Restore"; } - pbf.pine_anchor = set_titlebar("SEARCH DIRECTORY SERVER", + pbf.pine_anchor = set_titlebar("搜尋地址伺服器", ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder, @@ -6709,10 +6709,10 @@ HELP_MENU, OTHER_MENU, - {"V","ViewLink",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, + {"V","檢視鏈結",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, NULL_MENU, - {"^B","PrevLink",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, - {"^F","NextLink",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, + {"^B","前一鏈結",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE}, + {"^F","次一鏈結",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -6746,13 +6746,13 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(srcstore); sargs.text.src = srctype; - sargs.text.desc = "expanded entry"; + sargs.text.desc = "已展開的項目"; sargs.text.handles= handles; - sargs.bar.title = "DIRECTORY ENTRY"; + sargs.bar.title = "地址項目"; sargs.proc.tool = process_ldap_cmd; sargs.proc.data.p = (void *) winning_e; sargs.help.text = h_ldap_view; - sargs.help.title = "HELP FOR DIRECTORY VIEW"; + sargs.help.title = "地址項目的輔助說明"; sargs.keys.menu = &ldap_view_keymenu; setbitmap(sargs.keys.bitmap); @@ -7235,7 +7235,7 @@ struct headerentry *he; void (*redraw_pico)(); { - return("Cancelled"); + return("取消"); } --- pine/addrbook.c.orig Tue Sep 13 06:04:25 2005 +++ pine/addrbook.c Fri Oct 7 21:53:28 2005 @@ -131,14 +131,14 @@ char *pcpine_help_addrbook PROTO((char *)); #endif -#define CLICKHERE "[ Address List ]" -#define EMPTY "[ Empty ]" -#define ZOOM_EMPTY "[ No Selected Entries in this Address Book ]" -#define ADD_PERSONAL " [ Move here to add a Personal Address Book ]" -#define ADD_GLOBAL " [ Move here to add a Global Address Book ]" -#define DISTLIST "DISTRIBUTION LIST:" -#define NOABOOKS "[ No Address Book Configured ]" -#define CLICKHERECMB "[ Select Here to See Expanded List ]" +#define CLICKHERE "[ 地址列表 ]" +#define EMPTY "[ 沒有任何項目 ]" +#define ZOOM_EMPTY "[ 本列表中沒有任何已被選取的項目 ]" +#define ADD_PERSONAL " [ 移到這裡加入一個個人的地址簿 ]" +#define ADD_GLOBAL " [ 移到這裡加入一個整體的地址簿 ]" +#define DISTLIST "分類列表:" +#define NOABOOKS "[ 沒有已經設定好的地址簿 ]" +#define CLICKHERECMB "[ 選這裡以檢視展開後的列表 ]" /* @@ -291,7 +291,7 @@ dprint(2, (debugfile, "parse_format: ignoring unrecognized word \"%s\" in address-book-formats\n", p ? p : "?")); q_status_message1(SM_ORDER, warnings++==0 ? 1 : 0, 4, - "Ignoring unrecognized word \"%.100s\" in address-book-formats", p); + "忽略地址簿格式中無法辨識的字 \"%.100s\"", p); /* put back space */ if(r) *r = SPACE; @@ -361,7 +361,7 @@ if(column == 0){ q_status_message(SM_ORDER, 0, 4, - "address-book-formats has no recognizable words, using default format"); + "由於在地址簿格式中找不到足以辨識的字,因此使用預設模式"); goto assign_default; } @@ -613,7 +613,7 @@ } else{ q_status_message(SM_ORDER | SM_DING, 5, 10, - "Bug in addrbook, not supposed to happen, re-syncing..."); + "地址簿功\能中出現未預期的錯誤,重新同步中..."); dprint(1, (debugfile, "Bug in addrbook (null dlc in dlist(%ld), not supposed to happen\n", @@ -1720,14 +1720,14 @@ mailcap_free(); /* free resources we won't be using for a while */ if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_screen!\n")); addrbook_reset(); } ab_nesting_level = 1; /* come here only from main menu */ - (void)addr_book(AddrBookScreen, "ADDRESS BOOK", NULL); + (void)addr_book(AddrBookScreen, "地址簿", NULL); end_adrbks(); pine_state->prev_screen = addr_book_screen; @@ -1750,14 +1750,14 @@ mailcap_free(); /* free resources we won't be using for a while */ if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_config!\n")); addrbook_reset(); } ab_nesting_level = 1; - (void)addr_book(AddrBookConfig, "SETUP ADDRESS BOOKS", NULL); + (void)addr_book(AddrBookConfig, "設定地址簿", NULL); end_adrbks(); pine_state->prev_screen = addr_book_screen; @@ -1781,7 +1781,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_oneaddr!\n")); addrbook_reset(); @@ -1790,7 +1790,7 @@ ab_nesting_level++; - p = addr_book(SelectAddr, "SELECT ADDRESS", NULL); + p = addr_book(SelectAddr, "選擇地址", NULL); if(ab_nesting_level <= 1) end_adrbks(); @@ -1907,7 +1907,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_compose!\n")); addrbook_reset(); @@ -1916,7 +1916,7 @@ ab_nesting_level++; - p = addr_book(SelectNicksCom, "COMPOSER: SELECT ADDRESS", error); + p = addr_book(SelectNicksCom, "編輯器:選擇列表", error); if(ab_nesting_level <= 1) end_adrbks(); @@ -1951,7 +1951,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_compose_lcc!\n")); addrbook_reset(); @@ -1964,7 +1964,7 @@ * We used to use SelectAddrLccCom here but decided it wasn't necessary * to restrict the selection to a list. */ - p = addr_book(SelectNicksCom, "COMPOSER: SELECT LIST", error); + p = addr_book(SelectNicksCom, "編輯器:選擇列表", error); if(ab_nesting_level <= 1) end_adrbks(); @@ -1999,7 +1999,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book... addr_book_change_list!\n")); addrbook_reset(); @@ -2008,7 +2008,7 @@ ab_nesting_level++; - p = addr_book(SelectNicksCom, "ADDRESS BOOK (Update): SELECT ADDRESSES", + p = addr_book(SelectNicksCom, "地址簿 (更新):選擇地址", error); if(ab_nesting_level <= 1) @@ -2041,7 +2041,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book...addr_book_bounce!\n")); addrbook_reset(); @@ -2050,7 +2050,7 @@ ab_nesting_level++; - p = addr_book(SelectManyNicks, "SELECT ADDRESSES", NULL); + p = addr_book(SelectManyNicks, "選擇地址", NULL); if(ab_nesting_level <= 1) end_adrbks(); @@ -2082,7 +2082,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book...addr_book_takeaddr!\n")); addrbook_reset(); @@ -2091,7 +2091,7 @@ ab_nesting_level++; - p = addr_book(SelectNickTake, "TAKEADDR: SELECT NICKNAME", NULL); + p = addr_book(SelectNickTake, "選擇地址:選擇暱稱", NULL); if(ab_nesting_level <= 1) end_adrbks(); @@ -2127,7 +2127,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book...addr_book_nick_for_edit!\n")); addrbook_reset(); @@ -2142,7 +2142,7 @@ * and this seemed to be the easiest way to accomplish that. */ as.n_serv = 0; - p = addr_book(SelectNickCom, "SELECT NICKNAME", error); + p = addr_book(SelectNickCom, "選擇暱稱", error); as.n_serv = save_n_serv; if(ab_nesting_level <= 1) @@ -2175,7 +2175,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ - q_status_message(SM_ORDER, 5, 10, "Resetting address book..."); + q_status_message(SM_ORDER, 5, 10, "正在重設地址簿..."); dprint(1, (debugfile, "RESETTING address book...addr_book_selnick!\n")); addrbook_reset(); @@ -2184,7 +2184,7 @@ ab_nesting_level++; - p = addr_book(SelectNick, "SELECT NICKNAME", NULL); + p = addr_book(SelectNick, "選擇暱稱", NULL); if(ab_nesting_level <= 1) end_adrbks(); @@ -2207,8 +2207,8 @@ NULL_MENU, NULL_MENU, NULL_MENU, - {"P", "PrevEntry", {MC_PREVITEM,1,{'p'}}, KS_NONE}, - {"N", "NextEntry", {MC_NEXTITEM,1,{'n'}}, KS_NONE}, + {"P", "前一個項目", {MC_PREVITEM,1,{'p'}}, KS_NONE}, + {"N", "次一個項目", {MC_NEXTITEM,1,{'n'}}, KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, NULL_MENU, @@ -2231,10 +2231,10 @@ HELP_MENU, OTHER_MENU, - {";","Select",{MC_SELECT,1,{';'}},KS_NONE}, - {"A","Apply",{MC_APPLY,1,{'a'}},KS_APPLY}, - {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, - {"Z","ZoomMode",{MC_ZOOM,1,{'z'}},KS_NONE}, + {";","選擇",{MC_SELECT,1,{';'}},KS_NONE}, + {"A","套用",{MC_APPLY,1,{'a'}},KS_APPLY}, + {":","選擇目前的",{MC_SELCUR,1,{':'}},KS_SELECTCUR}, + {"Z","縮放模式",{MC_ZOOM,1,{'z'}},KS_NONE}, NULL_MENU, NULL_MENU, NULL_MENU, @@ -2374,7 +2374,7 @@ if(!init_addrbooks(HalfOpen, 1, !as.config, !are_selecting)){ if(are_selecting){ q_status_message(SM_ORDER | SM_DING, 0, 4, - "No Address Book Configured"); + "沒有已設定完成的地址簿"); display_message(c); sleep(2); return NULL; @@ -2382,7 +2382,7 @@ else if(!as.config){ ps->next_screen = main_menu_screen; q_status_message(SM_ORDER | SM_DING, 3, 4, - "No Address Book Configured, Use SETUP Addressbook screen"); + "沒有已設定完成的地址簿,請用 SETUP Addressbook 功\能畫面"); ps->mangled_screen = 1; return NULL; } @@ -2392,7 +2392,7 @@ readonly_warning(NO_DING, NULL); else if(as.adrbks[0].access == NoAccess) q_status_message(SM_ORDER, 0, 4, - "AddressBook not accessible, permission denied"); + "地址簿禁止被存取"); } if(as.l_p_page < 1){ @@ -2540,10 +2540,10 @@ if(style == AddrBookScreen){ if(F_ON(F_CMBND_ABOOK_DISP,ps_global)) - sprintf(buf, "ADDRESS BOOK%s", (as.n_addrbk > 1) ? "S" : ""); + sprintf(buf, "地址簿"); else - sprintf(buf, "ADDRESS BOOK%s%.60s%s", - is_custom_title ? " <" : cur_is_open() ? "" : " LIST", + sprintf(buf, "地址簿%s%.60s%s", + is_custom_title ? " <" : cur_is_open() ? "" : "列表", is_custom_title ? pab->nickname : "", is_custom_title ? ">" : ""); @@ -2610,7 +2610,7 @@ km->how_many = 1; clrbitn(OTHER_KEY, bitmap); - menu_init_binding(km, 'E', MC_EXIT, "E", "Exit Setup", TWO_KEY); + menu_init_binding(km, 'E', MC_EXIT, "E", "離開", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_EXITMODE); /* @@ -2623,22 +2623,22 @@ clrbitn(THREE_KEY, bitmap); menu_init_binding(km, 'A', MC_ADDABOOK, "A", add_is_global(as.top_ent+as.cur_row) - ? "[Add Glob Abook]" - : "[Add Pers Abook]", + ? "[新增整體地址簿]" + : "[新增個人地址簿]", ADD_KEY); def_key = ADD_KEY; } else{ - menu_init_binding(km, 'D', MC_DELABOOK, "D", "Del Abook", + menu_init_binding(km, 'D', MC_DELABOOK, "D", "刪除地址簿", DELETE_KEY); - menu_init_binding(km, '$', MC_SHUFFLE, "$", "Shuffle", + menu_init_binding(km, '$', MC_SHUFFLE, "$", "重整", SENDTO_KEY); - menu_init_binding(km, 'C', MC_EDITABOOK, "C", "[Change]", + menu_init_binding(km, 'C', MC_EDITABOOK, "C", "[修改]", THREE_KEY); menu_init_binding(km, 'A', MC_ADDABOOK, "A", add_is_global(as.top_ent+as.cur_row) - ? "Add Glob Abook" - : "Add Pers Abook", + ? "新增整體地址簿" + : "新增個人地址簿", ADD_KEY); } } @@ -2649,7 +2649,7 @@ * The OTHER_KEY is used as the Exit key in selection mode. * This is because the TWO_KEY is being used for < actions. */ - menu_init_binding(km, 'E', MC_EXIT, "E", "ExitSelect", + menu_init_binding(km, 'E', MC_EXIT, "E", "離開", OTHER_KEY); KS_OSDATASET(&km->keys[OTHER_KEY], KS_EXITMODE); @@ -2669,8 +2669,8 @@ clrbitn(TWO_KEY, bitmap); else{ menu_init_binding(km, '<', cmd, "<", - cmd == MC_POPUP ? "AddressBkList" - : "Unexpand", + cmd == MC_POPUP ? "地址簿列表" + : "復原展開", TWO_KEY); menu_add_binding(km, ',', cmd); if(F_ON(F_ARROW_NAV,ps)) @@ -2681,16 +2681,16 @@ if(checkedn){ if(entry_is_clickable_title(as.top_ent+as.cur_row)){ menu_init_binding(km, 'S', MC_CHOICE, "S", - "Select", TWO_KEY); + "選擇", TWO_KEY); } else{ menu_init_binding(km, 'S', MC_CHOICE, "S", - "[Select]", TWO_KEY); + "[選擇]", TWO_KEY); def_key = TWO_KEY; } } else - menu_init_binding(km, 'S', MC_CHOICE, "S", "Select", + menu_init_binding(km, 'S', MC_CHOICE, "S", "選擇", TWO_KEY); } else @@ -2702,7 +2702,7 @@ * key becomes the ViewAbook key. */ if(entry_is_askserver(as.top_ent+as.cur_row) && !as.checkboxes){ - menu_init_binding(km, '>', MC_QUERY_SERV, ">", "[Search]", + menu_init_binding(km, '>', MC_QUERY_SERV, ">", "[搜尋]", THREE_KEY); menu_add_binding(km, 's', MC_QUERY_SERV); menu_add_binding(km, '.', MC_QUERY_SERV); @@ -2710,7 +2710,7 @@ menu_add_binding(km, KEY_RIGHT, MC_QUERY_SERV); } else if(entry_is_clickable_title(as.top_ent+as.cur_row)){ - menu_init_binding(km, '>', MC_OPENABOOK, ">", "[ViewAbook]", + menu_init_binding(km, '>', MC_OPENABOOK, ">", "[檢視地址簿]", THREE_KEY); menu_add_binding(km, 'v', MC_OPENABOOK); menu_add_binding(km, '.', MC_OPENABOOK); @@ -2718,7 +2718,7 @@ menu_add_binding(km, KEY_RIGHT, MC_OPENABOOK); } else if(cur_is_open()){ - menu_init_binding(km, 'S', MC_CHOICE, "S", "[Select]", + menu_init_binding(km, 'S', MC_CHOICE, "S", "[選取]", THREE_KEY); } else @@ -2731,7 +2731,7 @@ */ if(entry_is_clickable(as.top_ent+as.cur_row) && !entry_is_clickable_title(as.top_ent+as.cur_row)){ - menu_init_binding(km, '>', MC_EXPAND, ">", "Expand", + menu_init_binding(km, '>', MC_EXPAND, ">", "展開", SENDTO_KEY); menu_add_binding(km, '.', MC_EXPAND); if(F_ON(F_ARROW_NAV,ps)) @@ -2741,12 +2741,12 @@ clrbitn(SENDTO_KEY, bitmap); if(cur_is_open() && as.checkboxes){ - menu_init_binding(km, 'X', MC_TOGGLE, "X", "Set/Unset", + menu_init_binding(km, 'X', MC_TOGGLE, "X", "設定/解除設定", DELETE_KEY); } else if(cur_is_open() && listmode_ok){ - menu_init_binding(km, 'L', MC_LISTMODE, "L", "ListMode", + menu_init_binding(km, 'L', MC_LISTMODE, "L", "列表模式", DELETE_KEY); } else @@ -2771,7 +2771,7 @@ * reasonable function call. */ km->keys[OTHER_KEY].name = "O"; - km->keys[OTHER_KEY].label = "OTHER CMDS"; + km->keys[OTHER_KEY].label = "其他命令"; km->keys[OTHER_KEY].bind.cmd = MC_OTHER; km->keys[OTHER_KEY].bind.ch[0] = 'O'; km->keys[OTHER_KEY].bind.nch = 1; @@ -2790,13 +2790,13 @@ if(F_OFF(F_EXPANDED_DISTLISTS,ps) && entry_is_listent(as.top_ent+as.cur_row)){ cmd = MC_UNEXPAND; - menu_init_binding(km, '<', cmd, "<", "Unexpand", + menu_init_binding(km, '<', cmd, "<", "復原展開", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE); } else{ cmd = MC_MAIN; - menu_init_binding(km, 'M', cmd, "<", "Main Menu", + menu_init_binding(km, 'M', cmd, "<", "主選單", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU); } @@ -2805,11 +2805,11 @@ /* * Add or delete entries from this address book. */ - menu_init_binding(km, '@', MC_ADD, "@", "AddNew", + menu_init_binding(km, '@', MC_ADD, "@", "新增", ADD_KEY); - menu_init_binding(km, 'D', MC_DELETE, "D", "Delete", + menu_init_binding(km, 'D', MC_DELETE, "D", "刪除", DELETE_KEY); - menu_init_binding(km, 'C', MC_COMPOSE, "C", "ComposeTo", + menu_init_binding(km, 'C', MC_COMPOSE, "C", "編修", SENDTO_KEY); KS_OSDATASET(&km->keys[SENDTO_KEY], KS_COMPOSER); menu_init_binding(km, '#', MC_ROLE, "#", "Role", @@ -2838,7 +2838,7 @@ if(F_OFF(F_EXPANDED_DISTLISTS,ps) && entry_is_listent(as.top_ent+as.cur_row)){ cmd = MC_UNEXPAND; - menu_init_binding(km, '<', cmd, "<", "Unexpand", + menu_init_binding(km, '<', cmd, "<", "復原展開", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE); } @@ -2846,12 +2846,12 @@ if(as.n_addrbk > 1 || as.n_serv){ cmd = MC_POPUP; menu_init_binding(km, '<', cmd, "<", - "AddressBkList", TWO_KEY); + "地址簿列表", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE); } else{ cmd = MC_MAIN; - menu_init_binding(km, 'M', cmd, "<", "Main Menu", + menu_init_binding(km, 'M', cmd, "<", "主選單", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU); } @@ -2861,9 +2861,9 @@ /* * Add or delete entries from this address book. */ - menu_init_binding(km, '@', MC_ADD, "@", "AddNew", + menu_init_binding(km, '@', MC_ADD, "@", "新增", ADD_KEY); - menu_init_binding(km, 'D', MC_DELETE, "D", "Delete", + menu_init_binding(km, 'D', MC_DELETE, "D", "刪除", DELETE_KEY); } else{ @@ -2873,14 +2873,14 @@ /* Find someplace to put Main Menu command */ if(cmd == MC_POPUP){ - menu_init_binding(km, 'M', MC_MAIN, "M", "Main Menu", + menu_init_binding(km, 'M', MC_MAIN, "M", "主選單", SECONDARY_MAIN_KEY); KS_OSDATASET(&km->keys[SECONDARY_MAIN_KEY],KS_MAINMENU); } else clrbitn(SECONDARY_MAIN_KEY, bitmap); - menu_init_binding(km, 'C', MC_COMPOSE, "C", "ComposeTo", + menu_init_binding(km, 'C', MC_COMPOSE, "C", "編修", SENDTO_KEY); KS_OSDATASET(&km->keys[SENDTO_KEY], KS_COMPOSER); menu_init_binding(km, '#', MC_ROLE, "#", "Role", @@ -2892,7 +2892,7 @@ * non-selection mode. */ cmd = MC_MAIN; - menu_init_binding(km, 'M', cmd, "<", "Main Menu", + menu_init_binding(km, 'M', cmd, "<", "主選單", TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU); @@ -2932,10 +2932,10 @@ cmd = MC_VIEW_ENTRY; menu_init_binding(km, '>', cmd, ">", - cmd == MC_EXPAND ? "[Expand]" : - cmd == MC_QUERY_SERV ? "[Search]" : - cur_is_open() ? "[View/Update]" - : "[ViewAbook]", + cmd == MC_EXPAND ? "[展開]" : + cmd == MC_QUERY_SERV ? "[搜尋]" : + cur_is_open() ? "[檢視/更新]" + : "[檢視地址簿]", THREE_KEY); if(cmd == MC_QUERY_SERV) @@ -3074,13 +3074,13 @@ } if(as.config) - helper(gAbookHelp, "HELP ON CONFIGURING ADDRESS BOOKS", + helper(gAbookHelp, "設定地址簿的輔助說明", HLPD_NONE); else if(are_selecting) - helper(gAbookHelp, "HELP ON ADDRESS BOOK", + helper(gAbookHelp, "地址簿的輔助說明", HLPD_SIMPLE | HLPD_NEWWIN); else /* general maintenance screen */ - helper(gAbookHelp, "HELP ON ADDRESS BOOK", HLPD_NONE); + helper(gAbookHelp, "地址簿的輔助說明", HLPD_NONE); /* * Helper() may have a Main Menu key. If user types that @@ -3154,7 +3154,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't happen in MC_UNEXPAND"); + "無法在 MC_UNEXPAND 時發生"); break; @@ -3190,7 +3190,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't happen in MC_POPUP"); + "無法在 MC_POPUP 時發生"); break; @@ -3261,11 +3261,11 @@ } else if(dlc_to_flush->type == DlcTitleNoPerm) q_status_message(SM_ORDER, 0, 4, - "Cannot access address book."); + "無法存取地址簿。"); } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't happen in MC_OPENABOOK"); + "無法在 MC_OPENABOOK 時發生"); break; @@ -3311,7 +3311,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't happen in MC_EXPAND"); + "無法在 MC_EXPAND 時發生"); break; @@ -3323,7 +3323,7 @@ /* Select an entry to mail to or a nickname to add to */ if(!any_addrs_avail(as.top_ent+as.cur_row)){ q_status_message(SM_ORDER | SM_DING, 0, 4, - "No entries in address book. Use ExitSelect to leave address books"); + "地址簿中找不到任何項目. 請以 離開選擇(E) 離開"); break; } @@ -3346,7 +3346,7 @@ } else if(as.checkboxes && checkedn <= 0){ q_status_message(SM_ORDER, 0, 1, - "Use \"X\" to mark addresses or lists"); + "使用 \"X\" 標記地址或列表"); break; } else if(as.checkboxes){ @@ -3430,7 +3430,7 @@ if(selecting_mult_nicks){ if(dl->type != ListHead && style == SelectAddrLccCom){ q_status_message(SM_ORDER, 0, 4, - "You may only select lists for lcc, use bcc for other addresses"); + "僅能選擇 lcc 列表, 其他的地址請用 bcc"); break; } else{ @@ -3522,16 +3522,16 @@ if(entry_is_clickable(as.top_ent+as.cur_row)) clickable_warning(as.top_ent+as.cur_row); else if(entry_is_askserver(as.top_ent+as.cur_row)) - q_status_message(SM_ORDER, 3, 4, "Use select to select an address or addresses from address books"); + q_status_message(SM_ORDER, 3, 4, "使用「選擇」來選擇地址簿中的地址"); else - q_status_message(SM_ORDER, 3, 4, "No address selected"); + q_status_message(SM_ORDER, 3, 4, "尚未選擇任何地址"); break; } } else q_status_message(SM_ORDER | SM_DING, 3, 4, - "Can't happen in MC_CHOICE"); + "無法在 MC_CHOICE 時發生"); break; @@ -3555,7 +3555,7 @@ if(adrbk_check_all_validity_now()){ if(resync_screen(pab, style, checkedn)){ q_status_message(SM_ORDER | SM_DING, 3, 4, - "Address book changed. AddNew cancelled. Try again."); + "地址簿被改變了;取消新增。請重試一遍。"); ps->mangled_screen = 1; break; } @@ -3570,7 +3570,7 @@ dprint(9, (debugfile, "Calling edit_entry to add entry manually\n")); edit_entry(pab->address_book, (AdrBk_Entry *)NULL, NO_NEXT, - NotSet, 0, &warped, "add"); + NotSet, 0, &warped, "新增"); /* * Warped means we got plopped down somewhere in the display @@ -3713,7 +3713,7 @@ } else{ q_status_message1(SM_ORDER|SM_DING, 0, 4, - "Missing \"}\" in config: %.200s", q); + "設定檔中缺乏 \"}\":%.200s", q); if(nick) fs_give((void **)&nick); if(file) @@ -3749,7 +3749,7 @@ ps->mangled_screen = 1; } else - q_status_message(SM_ORDER, 0, 4, "Not a changeable line"); + q_status_message(SM_ORDER, 0, 4, "不為可被更改的一行"); break; @@ -3757,7 +3757,7 @@ /*---------- Delete an address book -------------------*/ case MC_DELABOOK: if(as.n_addrbk == 0){ - q_status_message(SM_ORDER, 0, 4, "Nothing to delete"); + q_status_message(SM_ORDER, 0, 4, "沒有可被刪除的項目"); break; } @@ -3828,7 +3828,7 @@ start_disp = 0; ps->mangled_body = 1; ps->mangled_footer = 1; - q_status_message(SM_ORDER, 0, 3, "Address book deleted"); + q_status_message(SM_ORDER, 0, 3, "地址簿已被刪除"); } else{ if(err){ @@ -3847,7 +3847,7 @@ case MC_SHUFFLE: if(entry_is_addkey(as.top_ent+as.cur_row)){ q_status_message(SM_ORDER, 0, 4, - "Highlight entry you wish to shuffle"); + "標示想要重整的項目"); break; } @@ -3920,8 +3920,8 @@ q_status_message(SM_ORDER, 0, 3, msg ? msg : - (ret < 0) ? "Shuffle failed" : - "Address books shuffled"); + (ret < 0) ? "重整失敗" : + "地址簿已重整"); if(ret < 0) dprint(5, (debugfile, "addrbook shuffle failed: %s\n", msg ? msg : "?")); @@ -3948,7 +3948,7 @@ if(new_top_ent == as.top_ent || (as.cur_row + (as.top_ent-new_top_ent) > as.l_p_page - 1)){ - q_status_message(SM_INFO, 0, 1, "Already on first line."); + q_status_message(SM_INFO, 0, 1, "已經在第一行了。"); } else{ as.cur_row += (as.top_ent - new_top_ent); @@ -4006,7 +4006,7 @@ if(new_end_line - as.top_ent <= as.l_p_page - 1 || as.cur_row - (new_end_line-as.top_ent-(as.l_p_page-1)) < 0){ - q_status_message(SM_INFO, 0, 1, "Already on last line."); + q_status_message(SM_INFO, 0, 1, "已經在最後一行了。"); } else{ as.cur_row -= (new_end_line-as.top_ent-(as.l_p_page-1)); @@ -4096,7 +4096,7 @@ #endif default: q_status_message(SM_INFO, 0, 1, - "Can't happen in MC_MOUSE"); + "無法在 MC_MOUSE 時發生"); break; } } @@ -4205,7 +4205,7 @@ break; if(as.top_ent == new_top_ent && as.cur_row == (fl-as.top_ent)){ - q_status_message(SM_INFO, 0, 1, "Already on first page."); + q_status_message(SM_INFO, 0, 1, "已經在第一頁了。"); break; } @@ -4241,7 +4241,7 @@ as.cur_row - (new_end_line-as.top_ent-(as.l_p_page-1)) < 0){ q_status_message(SM_INFO, 0, 1, - "Already on last page."); + "已經在最後一頁了。"); } else{ as.cur_row -= @@ -4290,14 +4290,14 @@ if(adrbk_check_all_validity_now()){ if(resync_screen(pab, style, checkedn)){ q_status_message(SM_ORDER | SM_DING, 3, 4, - "Address book changed. Delete cancelled. Try again."); + "地址簿被改變了;取消刪除。請重試一遍。"); ps->mangled_screen = 1; break; } } if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to delete"); + q_status_message(SM_ORDER, 0, 4, "沒有可供刪除的項目"); break; } @@ -4359,7 +4359,7 @@ case MC_TOGGLE: togglex: if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to select"); + q_status_message(SM_ORDER, 0, 4, "沒有可供刪除的項目"); break; } @@ -4378,10 +4378,10 @@ if(style == SelectAddrLccCom && dl->type == ListEnt) q_status_message(SM_ORDER, 0, 4, - "You may only select whole lists for lcc"); + "僅能選擇整個列表給 lcc"); else if(style == SelectAddrLccCom && dl->type != ListHead) q_status_message(SM_ORDER, 0, 4, - "You may only select lists for lcc, use bcc for personal entries"); + "僅能選擇列表給 lcc,個人項目請用 bcc"); else if(dl->type == ListHead || dl->type == Simple){ current_changed_flag++; if(entry_is_checked(pab->address_book->checks, @@ -4403,11 +4403,11 @@ } else q_status_message(SM_ORDER, 0, 4, - "You may not select list members, only whole lists or personal entries"); + "無法選擇列表成員,僅能選擇整個列表或個人項目"); } else q_status_message(SM_ORDER, 0, 4, - "You may only select addresses or lists"); + "僅能選擇地址或列表"); break; @@ -4476,7 +4476,7 @@ ps->mangled_body = 1; start_disp = 0; q_status_message(SM_ORDER, 0, 4, - "Use \"X\" to select addresses or lists"); + "使用 \"X\" 標記地址或列表"); break; @@ -4502,13 +4502,13 @@ if(!directory_ok){ q_status_message(SM_ORDER, 0, 4, (style == SelectAddrLccCom) - ? "Can't search server for Lcc" - : "Can't search server from here"); + ? "無法由伺服器搜尋 Lcc" + : "無法由此搜尋伺服器"); break; } else if(as.checkboxes){ q_status_message(SM_ORDER, 0, 4, - "Can't search server when using ListMode"); + "使用 ListMode 時無法搜尋伺服器"); break; } @@ -4563,14 +4563,14 @@ /*----- Select entries to work on --*/ case MC_SELECT: if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to select"); + q_status_message(SM_ORDER, 0, 4, "沒有可供選擇的項目"); break; } if(!cur_is_open()){ if(entry_is_askserver(as.top_ent+as.cur_row)) q_status_message(SM_ORDER, 0, 4, - "Select is only available from within an expanded address book"); + "僅能在展開後的地址簿中選擇"); else clickable_warning(as.top_ent+as.cur_row); @@ -4603,7 +4603,7 @@ /*----------- Select current entry ----------*/ case MC_SELCUR: if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to select"); + q_status_message(SM_ORDER, 0, 4, "沒有可供選擇的項目"); break; } @@ -4665,7 +4665,7 @@ dlc_restart = *dlc; as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, - "Zoom Mode is now off, no entries selected"); + "縮放模式目前為關閉狀態,沒有任何被選擇的項目"); warp_to_dlc(&dlc_restart, 0L); /* put current entry in middle of screen */ @@ -4761,11 +4761,11 @@ } else q_status_message(SM_ORDER, 0, 4, - "You may not select list members, only whole lists or personal entries"); + "無法選擇列表成員,僅能選擇整個列表或個人項目"); } else q_status_message(SM_ORDER, 0, 4, - "You may only select addresses or lists"); + "僅能選擇地址或列表"); break; @@ -4778,7 +4778,7 @@ : NULL, &start_disp); else{ - q_status_message(SM_ORDER, 0, 2, "Zoom Mode is now off"); + q_status_message(SM_ORDER, 0, 2, "現在關閉縮放模式"); ab_unzoom(&start_disp); } @@ -4820,7 +4820,7 @@ } else q_status_message(SM_ORDER, 0, 2, - "No selected entries to apply command to"); + "沒有已選擇的項目可供套用命令"); break; @@ -4866,7 +4866,7 @@ /*------ Copy entries into an abook ----*/ case MC_SAVE: if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to save"); + q_status_message(SM_ORDER, 0, 4, "沒有可供存入的項目"); break; } @@ -4888,7 +4888,7 @@ /*------ Forward an entry in mail -----------*/ case MC_FORWARD: if(!any_addrs_avail(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "No entries to forward"); + q_status_message(SM_ORDER, 0, 4, "沒有可供轉寄的項目"); break; } @@ -4903,14 +4903,14 @@ } if(!is_addr(as.top_ent+as.cur_row)){ - q_status_message(SM_ORDER, 0, 4, "Nothing to forward"); + q_status_message(SM_ORDER, 0, 4, "沒有東西可以轉寄"); break; } dl = dlist(as.top_ent+as.cur_row); if(dl->type != ListHead && dl->type != Simple){ q_status_message(SM_ORDER, 0, 4, - "Can only forward whole entries"); + "僅能轉寄整個列表"); break; } @@ -4942,18 +4942,18 @@ case MC_UNKNOWN: if(c == 'e' && !are_selecting){ q_status_message(SM_ORDER | SM_DING, 0, 2, - "Command \"E\" not defined. Use \"View/Update\" to edit an entry"); + "\"E\" 這個命令尚未被定義. 請使用 \"檢視/編輯\" 編輯選項"); break; } else if(c == 's' && !(are_selecting || entry_is_clickable(as.top_ent+as.cur_row))){ q_status_message(SM_ORDER | SM_DING, 0, 2, - "Command \"S\" not defined. Use \"AddNew\" to create a list"); + "\"S\" 這個命令尚未被定義. 請使用 \"新增\" 建立列表"); break; } else if(c == 'z' && !are_selecting){ q_status_message(SM_ORDER | SM_DING, 0, 2, - "Command \"Z\" not defined. Use \"View/Update\" to add to a list"); + "\"Z\" 這個命令尚未被定義. 請使用 \"檢視/更新\" 新增至列表"); break; } /* else, fall through */ @@ -4991,7 +4991,7 @@ as.zoomed = 1; if(as.selections){ - q_status_message(SM_ORDER, 0, 2, "Zoom Mode is now on"); + q_status_message(SM_ORDER, 0, 2, "現在開啟縮放模式"); if(cur_is_open()){ dl = dlist(as.top_ent+as.cur_row); if((dl->type == ListHead || @@ -5039,7 +5039,7 @@ } else{ as.zoomed = 0; - q_status_message(SM_ORDER, 0, 2, "No selected entries to zoom on"); + q_status_message(SM_ORDER, 0, 2, "沒有已選擇的項目可供放大"); } } @@ -5100,7 +5100,7 @@ char *name; { q_status_message2(SM_ORDER | (bell ? SM_DING : 0), 0, 4, - "AddressBook%.200s%.200s is Read Only", + "地址簿%s.200s%s.200s 是唯讀的", name ? " " : "", name ? name : ""); } @@ -5121,11 +5121,11 @@ dl = dlist(cur_line); if(dl->type == NoAbooks) q_status_message(SM_ORDER, 0, 4, - "No address books configured, use Setup"); + "沒有已設定好的地址簿,請用 Setup"); else if(dl->type == Empty) - q_status_message(SM_ORDER, 0, 4, "Address Book is Empty"); + q_status_message(SM_ORDER, 0, 4, "地址簿是空的"); else - q_status_message(SM_ORDER, 0, 4, "Distribution List is Empty"); + q_status_message(SM_ORDER, 0, 4, "分類列表是空的"); } @@ -5142,9 +5142,9 @@ register AddrScrn_Disp *dl; dl = dlist(cur_line); - q_status_message1(SM_ORDER, 0, 4, "%s not expanded, use \">\" to expand", - (dl->type == Title || dl->type == ClickHereCmb) ? "Address Book" - : "Distribution List"); + q_status_message1(SM_ORDER, 0, 4, "%s 未被展開,使用 \">\" 來展開", + (dl->type == Title || dl->type == ClickHereCmb) ? "地址簿" + : "分類列表"); } @@ -5160,7 +5160,7 @@ char *what; { q_status_message1(SM_INFO | (bell ? SM_DING : 0), 0, 2, - "Address book %s cancelled", what); + "地址簿%s已取消", what); } @@ -5170,7 +5170,7 @@ void no_tabs_warning() { - q_status_message(SM_ORDER, 0, 4, "Tabs not allowed in address book"); + q_status_message(SM_ORDER, 0, 4, "地址簿中不允許\有 Tab 存在"); } @@ -5189,12 +5189,12 @@ { int ret = 0; static ESCKEY_S opts[] = { - {'c', 'c', "C", "ComposeTo"}, - {'d', 'd', "D", "Delete"}, - {'%', '%', "%", "Print"}, - {'f', 'f', "F", "Forward"}, - {'s', 's', "S", "Save"}, - {'#', '#', "#", "Role"}, + {'c', 'c', "C", "編排"}, + {'d', 'd', "D", "刪除"}, + {'%', '%', "%", "列印"}, + {'f', 'f', "F", "轉寄"}, + {'s', 's', "S", "存檔"}, + {'#', '#', "#", "身份"}, { 0, '%', "", ""}, {-1, 0, NULL, NULL}}; #define PHANTOM_PRINT 6 @@ -5204,7 +5204,7 @@ opts[PHANTOM_PRINT].ch = (F_ON(F_ENABLE_PRYNT, ps_global)) ? 'y' : -1; - switch(radio_buttons("APPLY command : ", command_line, opts, 'z', 'x', + switch(radio_buttons("套用命令:", command_line, opts, 'z', 'x', NO_HELP, RB_NORM, NULL)){ case 'c': ret = ab_compose_to_addr(cur_line, 1, 0); @@ -5231,12 +5231,12 @@ break; case 'x': - cmd_cancelled("Apply command"); + cmd_cancelled("套用命令"); break; case 'z': q_status_message(SM_INFO, 0, 2, - "Cancelled, there is no default command"); + "已取消,沒有預設的命令"); break; } @@ -5258,22 +5258,22 @@ int *start_disp; { static ESCKEY_S sel_opts1[] = { - {'a', 'a', "A", "unselect All"}, + {'a', 'a', "A", "取消所有選擇"}, { 0 , 'c', "C", NULL}, - {'b', 'b', "B", "Broaden selctn"}, - {'n', 'n', "N", "Narrow selctn"}, - {'f', 'f', "F", "Flip selected"}, + {'b', 'b', "B", "擴大選擇"}, + {'n', 'n', "N", "縮小選擇"}, + {'f', 'f', "F", "切換選擇"}, {-1, 0, NULL, NULL} }; static char *sel_pmt1 = "ALTER message selection : "; static ESCKEY_S sel_opts2[] = { - {'a', 'a', "A", "select All"}, - {'c', 'c', "C", "select Cur"}, - {'t', 't', "T", "Text"}, - {'s', 's', "S", "Status"}, + {'a', 'a', "A", "選擇全部"}, + {'c', 'c', "C", "選擇目前的"}, + {'t', 't', "T", "文字"}, + {'s', 's', "S", "狀態"}, {-1, 0, NULL, NULL} }; - static char *sel_pmt2 = "SELECT criteria : "; + static char *sel_pmt2 = "選擇標準:"; ESCKEY_S *sel_opts; HelpType help = NO_HELP; adrbk_cntr_t num, ab_count; @@ -5301,8 +5301,8 @@ if(dl && (dl->type == ListHead || dl->type == Simple)){ sel_opts1[1].label = entry_is_selected(abook->selects, (a_c_arg_t)dl->elnum) - ? "unselect Cur" - : "select Cur"; + ? "取消目前的選擇" + : "選擇目前的"; sel_opts1[1].ch = 'c'; } else @@ -5324,7 +5324,7 @@ default: q_status_message(SM_ORDER | SM_DING, 3, 3, - "Unsupported Select option"); + "尚未支援的選項"); return; } } @@ -5333,8 +5333,8 @@ (dl->type == ListHead || dl->type == Simple)){ sel_opts1[1].label = entry_is_selected(abook->selects, (a_c_arg_t)dl->elnum) - ? "unselect Cur" - : "select Cur"; + ? "取消目前的選擇" + : "選擇目前的"; sel_opts1[1].ch = 'c'; } else @@ -5351,7 +5351,7 @@ switch(q){ case 'x': /* cancel */ - cmd_cancelled("Select command"); + cmd_cancelled("選擇命令"); break; case 'c': /* select/unselect current */ @@ -5363,7 +5363,7 @@ if(as.selections == 0 && as.zoomed){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, - "Zoom Mode is now off, no entries selected"); + "縮放模式目前為關閉狀態,沒有任何被選擇的項目"); do_warp++; } else if(as.zoomed){ @@ -5402,17 +5402,17 @@ if(as.selections == 0 && as.zoomed){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, - "Zoom Mode is now off, all entries UNselected"); + "縮放模式目前為關閉狀態,取消所有已選擇的項目"); do_warp++; } else{ char bb[100]; - sprintf(bb, "%.10s entries UNselected%s%.10s%s", + sprintf(bb, "%.10s 個項目被取消選擇%s%.10s%s", comatose(prevsel-as.selections), - as.selections ? ", still " : "", + as.selections ? ",仍有 " : "", as.selections ? comatose(as.selections) : "", - as.selections ? " selected in other addrbooks" : ""); + as.selections ? " 個項目選擇於其他地址簿中" : ""); q_status_message(SM_ORDER, 0, 2, bb); if(as.zoomed) do_beginning++; @@ -5428,7 +5428,7 @@ } } - q_status_message1(SM_ORDER, 0, 2, "All %s entries selected", + q_status_message1(SM_ORDER, 0, 2, "已選擇所有 %s 的項目", comatose(ab_count)); if(prevsel == 0 && as.selections > 0 && !as.zoomed && F_ON(F_AUTO_ZOOM, ps)){ @@ -5465,14 +5465,14 @@ do_beginning++; else{ as.zoomed = 0; - q_status_message(SM_ORDER, 0, 2, "Zoom Mode is now off"); + q_status_message(SM_ORDER, 0, 2, "現在關閉縮放模式"); do_warp++; } } else do_warp++; - q_status_message1(SM_ORDER, 0, 2, "%s entries now selected", + q_status_message1(SM_ORDER, 0, 2, "項目 %s 現在已被選擇", comatose(as.selections)); break; @@ -5498,7 +5498,7 @@ if(as.selections == 0){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, - "Zoom Mode is now off"); + "現在關閉縮放模式"); do_warp++; } else @@ -5517,63 +5517,63 @@ if(prevsel == as.selections && prevsel > 0){ if(as.selections == 1) q_status_message(SM_ORDER, 0, 2, - "No change resulted, 1 entry remains selected"); + "沒有導致任何改變,仍有一個項目被選取"); else q_status_message1(SM_ORDER, 0, 2, - "No change resulted, %s entries remain selected", + "沒有導致任何改變,仍有 %s 個項目被選取", comatose(as.selections)); } else if(prevsel == 0){ if(as.selections == 1) q_status_message(SM_ORDER, 0, 2, - "Select matched 1 entry"); + "選擇符合的一個項目"); else if(as.selections > 1) q_status_message1(SM_ORDER, 0, 2, - "Select matched %s entries", + "選擇符合的 %s 個項目", comatose(as.selections)); else q_status_message(SM_ORDER, 0, 2, - "Select failed! No entries selected"); + "選擇失敗!沒有任何項目被選擇"); } else if(as.selections == 0){ if(prevsel == 1) q_status_message(SM_ORDER, 0, 2, - "The single selected entry is UNselected"); + "取消已被選擇的單一項目"); else q_status_message1(SM_ORDER, 0, 2, - "All %s entries UNselected", + "所有 %s 個項目都被取消選擇", comatose(prevsel)); } else if(narrow){ if(as.selections == 1 && (prevsel-as.selections) == 1) q_status_message(SM_ORDER, 0, 2, - "1 entry now selected, 1 entry was UNselected"); + "一項目被選擇,一項目被取消選擇"); else if(as.selections == 1) q_status_message1(SM_ORDER, 0, 2, - "1 entry now selected, %s entries were UNselected", + "一項目被選擇,%s 個項目被取消選擇", comatose(prevsel-as.selections)); else if((prevsel-as.selections) == 1) q_status_message1(SM_ORDER, 0, 2, - "%s entries now selected, 1 entry was UNselected", + "%s 個項目被選擇,一項目被取消選擇", comatose(as.selections)); else q_status_message2(SM_ORDER, 0, 2, - "%.200s entries now selected, %.200s entries were UNselected", + "%.200s 個項目被選擇,%.200s 個項目被取消選擇", comatose(as.selections), comatose(prevsel-as.selections)); } else{ if((as.selections-prevsel) == 1) q_status_message1(SM_ORDER, 0, 2, - "1 new entry selected, %s entries now selected", + "一個新項目被選擇,目前有 %s 個項目已被選擇", comatose(as.selections)); else if(as.selections == 1) q_status_message1(SM_ORDER, 0, 2, - "%s new entries selected, 1 entry now selected", + "%s 個新項目被選擇,一個項目已被選擇", comatose(as.selections-prevsel)); else q_status_message2(SM_ORDER, 0, 2, - "%.200s new entries selected, %.200s entries now selected", + "%.200s 個新項目被選擇,目前有 %.200s 個項目已被選擇", comatose(as.selections-prevsel), comatose(as.selections)); } @@ -5583,17 +5583,17 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, - "Unsupported Select option"); + "尚未支援的選項"); break; } } else{ if(F_ON(F_CMBND_ABOOK_DISP,ps_global)) q_status_message(SM_ORDER | SM_DING, 3, 3, - "Select is only available from within an expanded address book"); + "僅支援自展開的地址簿中選擇"); else q_status_message(SM_ORDER | SM_DING, 3, 3, - "Select is only available when viewing an individual address book"); + "選擇僅能在檢視個人地址簿時使用"); return; } @@ -5652,11 +5652,11 @@ int narrow; { static ESCKEY_S ab_sel_type_opt[] = { - {'s', 's', "S", "Simple"}, - {'l', 'l', "L", "List"}, + {'s', 's', "S", "簡單"}, + {'l', 'l', "L", "列表"}, {-1, 0, NULL, NULL} }; - static char *ab_sel_type = "Select Lists or Simples (non Lists) ? "; + static char *ab_sel_type = "選擇列表或簡單(無列表)?"; int type; adrbk_cntr_t num, ab_count; @@ -5674,7 +5674,7 @@ break; case 'x': - cmd_cancelled("Select"); + cmd_cancelled("選擇"); return -1; default: @@ -5795,7 +5795,7 @@ } if(type == 'x' || r == 'x'){ - cmd_cancelled("Select"); + cmd_cancelled("選擇"); return -1; } @@ -5878,7 +5878,7 @@ break; default: - q_status_message(SM_ORDER | SM_DING, 3, 3, "Unknown type"); + q_status_message(SM_ORDER | SM_DING, 3, 3, "未知的型態"); return(err); } @@ -6010,18 +6010,18 @@ new_top_ent = NO_LINE; if(rc == -2) - cancel_warning(NO_DING, "search"); + cancel_warning(NO_DING, "搜尋"); else if(rc == -1) - q_status_message(SM_ORDER, 0, 4, "Word not found"); + q_status_message(SM_ORDER, 0, 4, "找不到該字"); else if(rc == 0){ /* search succeeded */ if(wrapped == 1) - q_status_message(SM_INFO, 0, 2, "Search wrapped to beginning"); + q_status_message(SM_INFO, 0, 2, "從頭搜尋"); else if(wrapped == 2) q_status_message(SM_INFO, 0, 2, - "Current line contains the only match"); + "目前這行僅包含唯一符合的目標"); /* know match is on the same page */ if(!*warped && @@ -6668,7 +6668,7 @@ dprint(7, (debugfile, "- search_book -\n")); - sprintf(prompt, "Word to search for [%.*s]: ", MAX_SEARCH, search_string); + sprintf(prompt, "欲搜尋的字串 [%.*s]: ", MAX_SEARCH, search_string); help = NO_HELP; nsearch_string[0] = '\0'; @@ -6680,12 +6680,12 @@ ekey[1].ch = ctrl('Y'); ekey[1].rval = 10; ekey[1].name = "^Y"; - ekey[1].label = "First Adr"; + ekey[1].label = "第一個地址"; ekey[2].ch = ctrl('V'); ekey[2].rval = 11; ekey[2].name = "^V"; - ekey[2].label = "Last Adr"; + ekey[2].label = "最後一個地址"; ekey[3].ch = -1; @@ -6703,11 +6703,11 @@ warp_to_beginning(); /* go to top of addrbooks */ if((nl=first_selectable_line(0L)) != NO_LINE){ *new_line = nl; - q_status_message(SM_INFO, 0, 2, "Searched to first entry"); + q_status_message(SM_INFO, 0, 2, "搜尋至第一個項目"); return 0; } else{ - q_status_message(SM_INFO, 0, 2, "No entries"); + q_status_message(SM_INFO, 0, 2, "沒有任何項目"); return -1; } } @@ -6716,11 +6716,11 @@ warp_to_end(); /* go to bottom */ if((nl=first_selectable_line(0L)) != NO_LINE){ *new_line = nl; - q_status_message(SM_INFO, 0, 2, "Searched to last entry"); + q_status_message(SM_INFO, 0, 2, "搜尋至最終項"); return 0; } else{ - q_status_message(SM_INFO, 0, 2, "No entries"); + q_status_message(SM_INFO, 0, 2, "沒有任何項目"); return -1; } } --- imap/src/osdep/unix/Makefile.orig Sun May 1 04:51:13 2005 +++ imap/src/osdep/unix/Makefile Fri Oct 7 21:53:27 2005 @@ -111,7 +111,7 @@ # Commands possibly overriden by the individual port ARRC=ar rc -CC=cc +#CC=cc LN=ln -s RANLIB=ranlib @@ -129,7 +129,8 @@ dummy.o pseudo.o netmsg.o flstring.o fdstring.o \ rfc822.o nntp.o smtp.o imap4r1.o pop3.o \ unix.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o -CFLAGS=-g +CFLAGS+=$(BASECFLAGS) $(EXTRACFLAGS) + CAT=cat MAKE=make @@ -231,7 +232,7 @@ SPOOLDIR=/var \ ACTIVEFILE=/usr/local/news/lib/active \ RSHPATH=/usr/bin/rsh \ - BASECFLAGS="-g -O -pipe" \ + BASECFLAGS="-pipe -DNFSKLUDGE" \ BASELDFLAGS="-lcrypt" bsi: # BSD/i386 --- imap/Makefile.orig Sun May 1 04:50:20 2005 +++ imap/Makefile Fri Oct 7 21:53:27 2005 @@ -503,16 +503,16 @@ $(TOOLS)/$@ "$(LN)" src/ansilib c-client $(TOOLS)/$@ "$(LN)" src/charset c-client $(TOOLS)/$@ "$(LN)" src/osdep/$(SYSTEM) c-client - $(TOOLS)/$@ "$(LN)" src/mtest mtest - $(TOOLS)/$@ "$(LN)" src/ipopd ipopd - $(TOOLS)/$@ "$(LN)" src/imapd imapd - $(TOOLS)/$@ "$(LN)" src/mailutil mailutil - $(TOOLS)/$@ "$(LN)" src/mlock mlock - $(TOOLS)/$@ "$(LN)" src/dmail dmail - $(TOOLS)/$@ "$(LN)" src/tmail tmail +# $(TOOLS)/$@ "$(LN)" src/mtest mtest +# $(TOOLS)/$@ "$(LN)" src/ipopd ipopd +# $(TOOLS)/$@ "$(LN)" src/imapd imapd +# $(TOOLS)/$@ "$(LN)" src/mailutil mailutil +# $(TOOLS)/$@ "$(LN)" src/mlock mlock +# $(TOOLS)/$@ "$(LN)" src/dmail dmail +# $(TOOLS)/$@ "$(LN)" src/tmail tmail $(LN) $(TOOLS)/$@ . -build: OSTYPE rebuild rebuildclean bundled +build: OSTYPE rebuild rebuildclean #bundled OSTYPE: @echo Building c-client for $(BUILDTYPE)... --- build.orig Thu May 5 05:22:22 2005 +++ build Fri Oct 7 21:53:27 2005 @@ -396,14 +396,14 @@ if [ -s c-client ] ; then rm -f c-client ; fi ln -s imap/c-client c-client - if [ -s mtest ] ; then rm -f mtest ; fi - ln -s imap/mtest mtest - if [ -s mailutil ] ; then rm -f mailutil ; fi - ln -s imap/mailutil mailutil - if [ -s imapd ] ; then rm -f imapd ; fi - ln -s imap/imapd imapd - if [ -s ipopd ] ; then rm -f ipopd ; fi - ln -s imap/ipopd ipopd +# if [ -s mtest ] ; then rm -f mtest ; fi +# ln -s imap/mtest mtest +# if [ -s mailutil ] ; then rm -f mailutil ; fi +# ln -s imap/mailutil mailutil +# if [ -s imapd ] ; then rm -f imapd ; fi +# ln -s imap/imapd imapd +# if [ -s ipopd ] ; then rm -f ipopd ; fi +# ln -s imap/ipopd ipopd echo "Making c-client library, imapd, and ipopd" echo $S1 $S2 $S3 $S4 $K1 > imap/SPECIALS cd "$PHOME/imap" @@ -482,15 +482,15 @@ cd "$PHOME/bin" rm -f pine mtest imapd mailutil pico pilot rpload rpdump ipop2d ipop3d if [ -s ../pine/pine ] ; then ln ../pine/pine pine ; fi - if [ -s ../mtest/mtest ] ; then ln ../mtest/mtest mtest ; fi - if [ -s ../mailutil/mailutil ] ; then ln ../mailutil/mailutil mailutil ; fi - if [ -s ../imapd/imapd ] ; then ln ../imapd/imapd imapd ; fi - if [ -s ../ipopd/ipop2d ] ; then ln ../ipopd/ipop2d ipop2d ; fi - if [ -s ../ipopd/ipop3d ] ; then ln ../ipopd/ipop3d ipop3d ; fi +# if [ -s ../mtest/mtest ] ; then ln ../mtest/mtest mtest ; fi +# if [ -s ../mailutil/mailutil ] ; then ln ../mailutil/mailutil mailutil ; fi +# if [ -s ../imapd/imapd ] ; then ln ../imapd/imapd imapd ; fi +# if [ -s ../ipopd/ipop2d ] ; then ln ../ipopd/ipop2d ipop2d ; fi +# if [ -s ../ipopd/ipop3d ] ; then ln ../ipopd/ipop3d ipop3d ; fi if [ -s ../pico/pico ] ; then ln ../pico/pico pico ; fi if [ -s ../pico/pilot ] ; then ln ../pico/pilot pilot ; fi - if [ -s ../pine/rpload ] ; then ln ../pine/rpload rpload ; fi - if [ -s ../pine/rpdump ] ; then ln ../pine/rpdump rpdump ; fi +# if [ -s ../pine/rpload ] ; then ln ../pine/rpload rpload ; fi +# if [ -s ../pine/rpdump ] ; then ln ../pine/rpdump rpdump ; fi if [ "$ALTDOCPATHS" = "1" ] then echo "making local docs" @@ -502,10 +502,10 @@ cd "$PHOME" echo '' echo "Links to executables are in bin directory:" - size bin/pine bin/mtest bin/imapd bin/pico bin/pilot bin/rpdump bin/rpload bin/mailutil bin/ipop2d bin/ipop3d + size bin/pine bin/pico bin/pilot case $maketarg in mnt) echo "Fixing stacksizes ..." - fixstk 64K bin/pine bin/pico bin/imapd bin/mtest bin/pilot + fixstk 64K bin/pine bin/pico bin/pilot esac if [ "$SSLWARN" = "1" ] then @@ -536,10 +536,10 @@ rm -f sslnopwd sslunix.nopwd sslsco.nopwd sslunix sslsco sslnone echo "Cleaning Pine" cd "$PHOME/pine" - make -f makefile.ult clean + make -f makefile.bsf clean echo "Cleaning pico" cd "$PHOME/pico" - make $makeargs -f makefile.ult clean + make $makeargs -f makefile.bsf clean echo "Done" cd "$PHOME" ;;