diff options
author | Steve Price <steve@FreeBSD.org> | 1999-03-15 01:45:43 +0000 |
---|---|---|
committer | Steve Price <steve@FreeBSD.org> | 1999-03-15 01:45:43 +0000 |
commit | 386876662e4dbdd7853107eccc308f5a53574050 (patch) | |
tree | 54ca39ec6a47e11004f2c66a9583d4089270cdc3 /chinese/pine4/files | |
parent | 1bceb7791d458f048f9349de7d51d343bc51cad0 (diff) | |
download | ports-386876662e4dbdd7853107eccc308f5a53574050.tar.gz ports-386876662e4dbdd7853107eccc308f5a53574050.zip |
Notes
Diffstat (limited to 'chinese/pine4/files')
-rw-r--r-- | chinese/pine4/files/patch-aj | 91 | ||||
-rw-r--r-- | chinese/pine4/files/patch-ao | 69 | ||||
-rw-r--r-- | chinese/pine4/files/patch-au | 14 | ||||
-rw-r--r-- | chinese/pine4/files/patch-av | 572 | ||||
-rw-r--r-- | chinese/pine4/files/patch-aw | 177 | ||||
-rw-r--r-- | chinese/pine4/files/patch-ax | 989 | ||||
-rw-r--r-- | chinese/pine4/files/patch-ay | 96 | ||||
-rw-r--r-- | chinese/pine4/files/patch-ba | 194 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bc | 112 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bd | 220 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bf | 812 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bg | 52 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bi | 79 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bj | 56 | ||||
-rw-r--r-- | chinese/pine4/files/patch-bk | 403 |
15 files changed, 2284 insertions, 1652 deletions
diff --git a/chinese/pine4/files/patch-aj b/chinese/pine4/files/patch-aj index cc7d338da183..a79745846f3c 100644 --- a/chinese/pine4/files/patch-aj +++ b/chinese/pine4/files/patch-aj @@ -1,6 +1,6 @@ ---- pico/composer.c.orig Wed Aug 19 10:37:25 1998 -+++ pico/composer.c Wed Aug 19 10:45:17 1998 -@@ -136,12 +136,12 @@ +--- pico/composer.c.orig Thu Dec 24 05:03:58 1998 ++++ pico/composer.c Wed Feb 24 02:12:51 1999 +@@ -133,12 +133,12 @@ static KEYMENU menu_header[] = { @@ -19,7 +19,7 @@ }; #define SEND_KEY 1 #define RICH_KEY 2 -@@ -245,7 +245,7 @@ +@@ -262,7 +262,7 @@ if(strlen(addrbuf) + strlen(buf) >= addrbuflen){ addrbuflen += NLINE * 4; if(!(addrbuf = (char *)realloc(addrbuf, addrbuflen))){ @@ -28,7 +28,7 @@ (void *) addrbuflen); return(ABORT); } -@@ -312,7 +312,7 @@ +@@ -329,7 +329,7 @@ * get first chunk of memory, and tie it to structure... */ if((curline = HALLOC()) == NULL){ @@ -37,7 +37,7 @@ return(FALSE); } longest = term.t_ncol - e->prlen - 1; -@@ -694,7 +694,7 @@ +@@ -711,7 +711,7 @@ } else{ (*term.t_beep)(); @@ -46,7 +46,7 @@ } break; -@@ -707,12 +707,12 @@ +@@ -724,12 +724,12 @@ err = NULL; if(headents[ods.cur_e].is_attach){ if(SyncAttach() < 0){ @@ -58,10 +58,10 @@ headents[ods.cur_e].break_on_comma, 0) == -1) - emlwrite("\007Format lines failed!", NULL); + emlwrite("\007版面整理失敗!", NULL); - UpdateHeader(); + UpdateHeader(0); PaintHeader(COMPOSER_TOP_LINE, FALSE); PaintBody(1); -@@ -966,7 +966,7 @@ +@@ -998,7 +998,7 @@ if(FormatLines(headents[ods.cur_e].hd_text, buf, term.t_ncol - headents[ods.cur_e].prlen, headents[ods.cur_e].break_on_comma,0)==-1){ @@ -69,8 +69,8 @@ + emlwrite("\007版面整理失敗!", NULL); } - UpdateHeader(); -@@ -1025,7 +1025,7 @@ + UpdateHeader(0); +@@ -1057,7 +1057,7 @@ if(FormatLines(ods.cur_l, bufp, (term.t_ncol-headents[ods.cur_e].prlen), headents[ods.cur_e].break_on_comma, 0) == -1){ @@ -79,7 +79,7 @@ NULL); (*term.t_beep)(); break; -@@ -1106,10 +1106,10 @@ +@@ -1193,10 +1193,10 @@ default : /* huh? */ bleep: if(ch&CTRL) @@ -92,7 +92,7 @@ case NODATA: break; -@@ -1149,14 +1149,14 @@ +@@ -1236,14 +1236,14 @@ if(gripe){ char xx[81]; @@ -111,7 +111,7 @@ strcat(xx, "."); emlwrite(xx, NULL); } -@@ -1191,7 +1191,7 @@ +@@ -1278,7 +1278,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) @@ -120,7 +120,7 @@ } } else if(headents[ods.cur_e].builder) { /* expand addresses */ int mangled = 0; -@@ -1262,8 +1262,8 @@ +@@ -1349,8 +1349,8 @@ if(!(new_l = prev_sel_hline(&new_e, ods.cur_l))){ /* all the way up! */ ods.p_line = COMPOSER_TOP_LINE; if(gripe) @@ -131,7 +131,7 @@ return(0); } -@@ -1292,7 +1292,7 @@ +@@ -1379,7 +1379,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) @@ -140,7 +140,7 @@ } } else if(headents[ods.cur_e].builder){ -@@ -1371,7 +1371,7 @@ +@@ -1458,7 +1458,7 @@ lp = lp->next; } else{ @@ -149,7 +149,7 @@ return(0); } } -@@ -1385,12 +1385,12 @@ +@@ -1472,12 +1472,12 @@ /* validate the new attachment, and reformat if needed */ if(status = SyncAttach()){ if(status < 0) @@ -164,7 +164,7 @@ return(0); } } -@@ -1466,7 +1466,7 @@ +@@ -1553,7 +1553,7 @@ if (term.t_nrow < 6 && ch != NODATA){ (*term.t_beep)(); @@ -173,7 +173,7 @@ continue; } -@@ -1537,13 +1537,13 @@ +@@ -1624,13 +1624,13 @@ if(headents[ods.cur_e].only_file_chars && !fallowc((unsigned char) ch)){ /* no garbage in filenames */ @@ -189,7 +189,7 @@ continue; } -@@ -1689,7 +1689,7 @@ +@@ -1779,7 +1779,7 @@ headents[ods.cur_e].dirty = 1; } else @@ -198,7 +198,7 @@ continue; case (CTRL|'F') : -@@ -1740,7 +1740,7 @@ +@@ -1830,7 +1830,7 @@ continue; if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off)){ @@ -207,7 +207,7 @@ continue; } -@@ -1754,7 +1754,7 @@ +@@ -1844,7 +1844,7 @@ } if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off-1)){ @@ -216,7 +216,7 @@ continue; } -@@ -1965,7 +1965,7 @@ +@@ -2141,7 +2141,7 @@ if(nlp == NULL){ /* no place to add below? */ if((lp = HALLOC()) == NULL){ @@ -225,7 +225,7 @@ free(buf); return(-1); } -@@ -2000,7 +2000,7 @@ +@@ -2174,7 +2174,7 @@ if(strlen(buf) && !nlp){ if((lp = HALLOC()) == NULL){ @@ -234,7 +234,7 @@ free(buf); return(-1); } -@@ -2286,14 +2286,14 @@ +@@ -2461,14 +2461,14 @@ if(level < 0 || !headents[level].name){ (*term.t_beep)(); @@ -251,9 +251,9 @@ + (Pmaster->pine_flags & MDHDRONLY) ? "地址簿" + : "編輯器", headents[level].name); + saved_state = save_pico_state(); (*Pmaster->helper)(headents[level].help, buf, 1); - ttresize(); -@@ -2923,7 +2923,7 @@ +@@ -3110,7 +3110,7 @@ } if((sbuf=(char *)malloc((unsigned) i)) == NULL){ @@ -262,7 +262,7 @@ return(-1); } -@@ -2980,7 +2980,7 @@ +@@ -3167,7 +3167,7 @@ if(!arg){ headarg = arg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!arg){ @@ -271,7 +271,7 @@ return(-1); } else{ -@@ -2993,7 +2993,7 @@ +@@ -3180,7 +3180,7 @@ else{ nextarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!nextarg){ @@ -280,7 +280,7 @@ return(-1); } else{ -@@ -3009,7 +3009,7 @@ +@@ -3196,7 +3196,7 @@ if(!e->sticky){ line = e->hd_text; if(!(arg->tptr=(char *)malloc(strlen(line->text) + 1))){ @@ -289,7 +289,7 @@ return(-1); } else -@@ -3026,7 +3026,7 @@ +@@ -3213,7 +3213,7 @@ if(!headarg){ headarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG)); if(!headarg){ @@ -298,7 +298,7 @@ return(-1); } else{ -@@ -3335,7 +3335,7 @@ +@@ -3522,7 +3522,7 @@ if(ksize()){ if((bp = buf = (char *)malloc(ksize()+5)) == NULL){ @@ -307,7 +307,7 @@ return(FALSE); } } -@@ -3369,7 +3369,7 @@ +@@ -3556,7 +3556,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) { @@ -316,7 +316,7 @@ return(FALSE); } -@@ -3578,9 +3578,9 @@ +@@ -3765,9 +3765,9 @@ if(Pmaster && Pmaster->exit_label) menu_header[SEND_KEY].label = Pmaster->exit_label; else if(gmode & (MDVIEW | MDHDRONLY)) @@ -328,7 +328,7 @@ if(gmode & MDVIEW){ menu_header[CUT_KEY].name = NULL; -@@ -3601,7 +3601,7 @@ +@@ -3788,14 +3788,14 @@ menu_header[RICH_KEY].name = NULL; } else{ @@ -337,7 +337,24 @@ menu_header[RICH_KEY].name = "^R"; } -@@ -3680,7 +3680,7 @@ + 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; +@@ -3804,7 +3804,7 @@ + } + else{ + menu_header[PONE_KEY].name = "^O"; +- menu_header[PONE_KEY].label = "Postpone"; ++ menu_header[PONE_KEY].label = "暫緩"; + KS_OSDATASET(&menu_header[PONE_KEY],KS_OSDATAGET(&headents[ods.cur_e])); + + menu_header[ATT_KEY].name = "^J"; +@@ -3876,7 +3876,7 @@ *headents[i].realaddr = bufp; } else{ diff --git a/chinese/pine4/files/patch-ao b/chinese/pine4/files/patch-ao index cb277b83db43..2d5dc2543248 100644 --- a/chinese/pine4/files/patch-ao +++ b/chinese/pine4/files/patch-ao @@ -1,5 +1,5 @@ ---- pico/file.c.orig Fri Aug 28 07:02:07 1998 -+++ pico/file.c Tue Sep 22 18:45:49 1998 +--- pico/file.c.orig Sat Jan 30 03:59:32 1999 ++++ pico/file.c Mon Feb 22 22:11:27 1999 @@ -63,17 +63,17 @@ return(s); @@ -15,7 +15,7 @@ return(0); } - if((gmode&MDTREE) && !in_oper_tree(fname)){ + if((gmode & MDTREE) && !in_oper_tree(fname)){ - emlwrite("Can't read file from outside of %s", opertree); + emlwrite("無法讀取 %s 以外的檔案", opertree); return(0); @@ -37,7 +37,7 @@ KS_OSDATASET(&menu_ins[last_menu], KS_NONE); } -@@ -159,43 +159,42 @@ +@@ -159,44 +159,43 @@ if(gmode & MDCMPLT){ menu_ins[++last_menu].name = msg ? "" : "TAB"; menu_ins[last_menu].key = (CTRL|'I'); @@ -51,13 +51,13 @@ - sprintf(prompt, "%s to insert from %s %s: ", - msg ? "Number of message" : "File", -- (msg || (gmode&MDCURDIR)) ? "current" + sprintf(prompt, "自%s%s插入的%s:", -+ (msg || (gmode&MDCURDIR)) ? "目前的" - : (gmode&MDTREE) ? opertree -- : "home", + (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 */ @@ -75,7 +75,8 @@ + emlwrite("在限制模式中無法插入檔案",NULL); } else{ - if(gmode&MDTREE && !compresspath(opertree, fname, NLINE)){ + if((gmode & MDTREE) + && !compresspath(opertree, fname, NLINE)){ emlwrite( - "Can't insert file from outside of %s: too many ..'s", + "無法在 %s 以外的地方插入檔案:太多 .. 了", @@ -84,13 +85,13 @@ else{ fixpath(fname, NLINE); - if((gmode&MDTREE) && !in_oper_tree(fname)) + if((gmode & MDTREE) && !in_oper_tree(fname)) - emlwrite("Can't insert file from outside of %s", + emlwrite("無法在 %s 以外的地方插入檔案", opertree); else retval = ifile(fname); -@@ -250,7 +249,7 @@ +@@ -252,7 +251,7 @@ break; case (CTRL|'T'): if(msg){ @@ -99,7 +100,7 @@ } else{ if(*fname && isdir(fname, NULL, NULL)) -@@ -264,7 +263,7 @@ +@@ -267,7 +266,7 @@ if((s = FileBrowse(dir, NLINE, fname, NLINE, NULL, FB_READ)) == 1){ if(gmode&MDSCUR){ @@ -108,7 +109,7 @@ NULL); sleep(2); } -@@ -305,7 +304,7 @@ +@@ -308,7 +307,7 @@ if(gmode&MDSCUR){ emlwrite( @@ -117,15 +118,9 @@ NULL); return(0); } -@@ -403,17 +402,17 @@ - +@@ -408,20 +407,20 @@ strcpy(curbp->b_fname, fname); - if ((gmode&MDTREE) && !in_oper_tree(fname)) { -- emlwrite("Can't read file from outside of %s", opertree); -+ emlwrite("無法讀取 %s 以外的檔案", opertree); - s = FIOERR; - } - else if ((s=ffropen(fname)) != FIOSUC){ /* Hard file open. */ + if ((s=ffropen(fname)) != FIOSUC){ /* Hard file open. */ if(s == FIOFNF) /* File not found. */ - emlwrite("New file", NULL); + emlwrite("新檔", NULL); @@ -138,6 +133,16 @@ nline = 0L; done = newline = 0; while(!done) + if((s = ffgetline(line, NLINE, 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; + } @@ -479,14 +478,14 @@ fname[0] = '\0'; @@ -159,7 +164,7 @@ @@ -497,7 +496,7 @@ } case TRUE: - if(gmode&MDTREE && !compresspath(opertree, fname, NFILEN)){ + if((gmode & MDTREE) && !compresspath(opertree, fname, NFILEN)){ - emlwrite("Can't write outside of %s: too many ..'s", + emlwrite("無法寫入 %s 以外的檔案:太多 .. 了", opertree); @@ -168,13 +173,13 @@ @@ -505,7 +504,7 @@ else{ fixpath(fname, NFILEN); /* fixup ~ in file name */ - if((gmode&MDTREE) && !in_oper_tree(fname)){ + if((gmode & MDTREE) && !in_oper_tree(fname)){ - emlwrite("Can't write outside of %s", opertree); + emlwrite("無法寫入 %s 以外的檔案", opertree); sleep(2); continue; } -@@ -586,12 +585,12 @@ +@@ -589,12 +588,12 @@ strcpy(fname, shows); } else { @@ -189,7 +194,7 @@ sleep(3); } refresh(FALSE, 1); -@@ -629,7 +628,7 @@ +@@ -632,7 +631,7 @@ return(ABORT); } } @@ -198,7 +203,7 @@ if ((s=writeout(fname, 0)) != -1) { if(!(gmode&MDTOOL)){ -@@ -646,9 +645,9 @@ +@@ -649,9 +648,9 @@ } if(s > 1) @@ -210,7 +215,7 @@ } return ((s == -1) ? FALSE : TRUE); } -@@ -674,12 +673,12 @@ +@@ -677,12 +676,12 @@ if ((curbp->b_flag&BFCHG) == 0) /* Return, no changes. */ return (TRUE); if (curbp->b_fname[0] == 0) { /* Must have a name. */ @@ -225,7 +230,7 @@ if ((s=writeout(curbp->b_fname, 0)) != -1) { curbp->b_flag &= ~BFCHG; wp = wheadp; /* Update mode lines. */ -@@ -690,10 +689,10 @@ +@@ -693,10 +692,10 @@ wp = wp->w_wndp; } if(s > 1){ @@ -238,7 +243,7 @@ } return (s); } -@@ -812,7 +811,7 @@ +@@ -815,7 +814,7 @@ curbp->b_flag &= ~BFTEMP; /* and are not temporary*/ curbp->b_linecnt = -1; /* must be recalculated */ @@ -247,7 +252,7 @@ done = newline = 0; nline = 0L; while(!done) -@@ -822,7 +821,7 @@ +@@ -825,7 +824,7 @@ else forwchar(FALSE, 1); @@ -256,7 +261,7 @@ emlwrite(line, NULL); break; } -@@ -910,7 +909,7 @@ +@@ -913,7 +912,7 @@ strcat(fn, S_FILESEP); } else{ diff --git a/chinese/pine4/files/patch-au b/chinese/pine4/files/patch-au index 04aa57854f0f..b827f7c0b209 100644 --- a/chinese/pine4/files/patch-au +++ b/chinese/pine4/files/patch-au @@ -1,5 +1,5 @@ ---- pine/osdep/os-bsf.h.orig Tue Sep 22 11:19:52 1998 -+++ pine/osdep/os-bsf.h Tue Sep 22 11:23:50 1998 +--- pine/osdep/os-bsf.h.orig Thu Oct 8 05:51:40 1998 ++++ pine/osdep/os-bsf.h Mon Feb 22 22:21:57 1999 @@ -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 @@ -7,14 +7,14 @@ - /usr/local/lib/pine.conf.fixed file. + @@PREFIX@@/etc/pine.conf.fixed file. ----*/ - /* #define NEVER_ALLOW_CHANGING_FROM /* probably not needed */ + /* #define NEVER_ALLOW_CHANGING_FROM */ @@ -87,7 +87,7 @@ NOTE: You'll also have to make sure the appropriate osdep/postreap.* file is included in the os-*.ic file for your system. ----*/ --/* #define BACKGROUND_POST /* comment out to disable posting from child */ -+#define BACKGROUND_POST /* comment out to disable posting from child */ +-/* #define BACKGROUND_POST */ ++/* #define BACKGROUND_POST /* comment out to disable posting from child */ @@ -33,8 +33,8 @@ /*---------------------------------------------------------------------- If no nntp-servers are defined, this program will be used to post news. ----*/ --#define SENDNEWS "/usr/local/news/inews -h" /* news posting cmd */ -+#define SENDNEWS "/usr/local/news/lib/inews -h" /* For NN inews */ +-#define SENDNEWS "/usr/local/news/inews -h" ++#define SENDNEWS "/usr/local/news/inews -h" /* For NN inews */ +/*#define SENDNEWS "/usr/local/bin/inews -h" /* For INN inews */ +/*#define SENDNEWS "/usr/local/bin/inews -h" /* For Cnews inews */ diff --git a/chinese/pine4/files/patch-av b/chinese/pine4/files/patch-av index c1820598b2f3..b336511f00d7 100644 --- a/chinese/pine4/files/patch-av +++ b/chinese/pine4/files/patch-av @@ -1,7 +1,7 @@ ---- pine/addrbook.c.orig Thu Jul 9 05:35:32 1998 -+++ pine/addrbook.c Tue Aug 4 12:42:15 1998 -@@ -126,13 +126,13 @@ - int addr_scroll_callback PROTO((int, long)); +--- pine/addrbook.c.orig Tue Feb 23 16:21:22 1999 ++++ pine/addrbook.c Tue Feb 23 18:02:45 1999 +@@ -129,14 +129,14 @@ + char *pcpine_help_addrbook PROTO((char *)); #endif -#define CLICKHERE "[ Address List ]" @@ -11,6 +11,7 @@ -#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 "[ 本列表中沒有任何已被選取的項目 ]" @@ -18,10 +19,11 @@ +#define ADD_GLOBAL " [ 移到這裡加入一個整體的地址簿 ]" +#define DISTLIST "分類列表:" +#define NOABOOKS "[ 沒有已經設定好的地址簿 ]" ++#define CLICKHERECMB "[ 選這裡以檢視展開後的列表 ]" /* -@@ -283,7 +283,7 @@ +@@ -287,7 +287,7 @@ dprint(2, (debugfile, "parse_format: ignoring unrecognized word \"%s\" in address-book-formats\n", p)); q_status_message1(SM_ORDER, warnings++==0 ? 1 : 0, 4, @@ -30,16 +32,16 @@ /* put back space */ if(r) *r = SPACE; -@@ -353,7 +353,7 @@ +@@ -357,7 +357,7 @@ if(column == 0){ q_status_message(SM_ORDER, 0, 4, - "address-book-formats has no recognizable words, using default format"); -+ "由於在地址簿格式中找不到足以辨識的字, 因此使用預設模式"); ++ "由於在地址簿格式中找不到足以辨識的字,因此使用預設模式"); goto assign_default; } -@@ -575,7 +575,7 @@ +@@ -599,7 +599,7 @@ } else{ q_status_message(SM_ORDER | SM_DING, 5, 10, @@ -48,7 +50,7 @@ dprint(1, (debugfile, "Bug in addrbook (null dlc in dlist(%ld), not supposed to happen\n", -@@ -1676,14 +1676,14 @@ +@@ -1705,14 +1705,14 @@ mailcap_free(); /* free resources we won't be using for a while */ if(setjmp(addrbook_changed_unexpectedly)){ @@ -64,8 +66,8 @@ + (void)addr_book(AddrBookScreen, "地址簿", NULL); end_adrbks(); - ab_nesting_level = 0; -@@ -1701,14 +1701,14 @@ + pine_state->prev_screen = addr_book_screen; +@@ -1728,14 +1728,14 @@ mailcap_free(); /* free resources we won't be using for a while */ if(setjmp(addrbook_changed_unexpectedly)){ @@ -81,8 +83,26 @@ + (void)addr_book(AddrBookConfig, "設定地址簿", NULL); end_adrbks(); - ab_nesting_level = 0; -@@ -1737,7 +1737,7 @@ + pine_state->prev_screen = addr_book_screen; +@@ -1759,7 +1759,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_oneaddr!\n")); + addrbook_reset(); +@@ -1768,7 +1768,7 @@ + + ab_nesting_level++; + +- p = addr_book(SelectAddr, "SELECT ADDRESS", NULL); ++ p = addr_book(SelectAddr, "選擇地址", NULL); + + if(ab_nesting_level <= 1) + end_adrbks(); +@@ -1803,7 +1803,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -91,16 +111,16 @@ dprint(1, (debugfile, "RESETTING address book... addr_book_compose!\n")); addrbook_reset(); -@@ -1746,7 +1746,7 @@ +@@ -1812,7 +1812,7 @@ ab_nesting_level++; - p = addr_book(SelectNicksCom, "COMPOSER: SELECT ADDRESS", error); -+ p = addr_book(SelectNicksCom, "編輯器:選擇地址", error); ++ p = addr_book(SelectNicksCom, "編輯器:選擇列表", error); if(ab_nesting_level <= 1) end_adrbks(); -@@ -1781,7 +1781,7 @@ +@@ -1847,7 +1847,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -109,7 +129,7 @@ dprint(1, (debugfile, "RESETTING address book... addr_book_compose_lcc!\n")); addrbook_reset(); -@@ -1794,7 +1794,7 @@ +@@ -1860,7 +1860,7 @@ * We used to use SelectAddrLccCom here but decided it wasn't necessary * to restrict the selection to a list. */ @@ -118,7 +138,7 @@ if(ab_nesting_level <= 1) end_adrbks(); -@@ -1829,7 +1829,7 @@ +@@ -1895,7 +1895,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -127,7 +147,7 @@ dprint(1, (debugfile, "RESETTING address book... addr_book_change_list!\n")); addrbook_reset(); -@@ -1838,7 +1838,7 @@ +@@ -1904,7 +1904,7 @@ ab_nesting_level++; @@ -136,7 +156,7 @@ error); if(ab_nesting_level <= 1) -@@ -1871,7 +1871,7 @@ +@@ -1937,7 +1937,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -145,7 +165,16 @@ dprint(1, (debugfile, "RESETTING address book...addr_book_bounce!\n")); addrbook_reset(); -@@ -1912,7 +1912,7 @@ +@@ -1946,7 +1946,7 @@ + + ab_nesting_level++; + +- p = addr_book(SelectManyNicks, "SELECT ADDRESSES", NULL); ++ p = addr_book(SelectManyNicks, "選擇地址", NULL); + + if(ab_nesting_level <= 1) + end_adrbks(); +@@ -1978,7 +1978,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -154,7 +183,16 @@ dprint(1, (debugfile, "RESETTING address book...addr_book_takeaddr!\n")); addrbook_reset(); -@@ -1957,7 +1957,7 @@ +@@ -1987,7 +1987,7 @@ + + ab_nesting_level++; + +- p = addr_book(SelectNickTake, "TAKEADDR: SELECT NICKNAME", NULL); ++ p = addr_book(SelectNickTake, "選擇地址:選擇暱稱", NULL); + + if(ab_nesting_level <= 1) + end_adrbks(); +@@ -2023,7 +2023,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -163,7 +201,16 @@ dprint(1, (debugfile, "RESETTING address book...addr_book_nick_for_edit!\n")); addrbook_reset(); -@@ -2005,7 +2005,7 @@ +@@ -2038,7 +2038,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) +@@ -2071,7 +2071,7 @@ save_nesting_level = cpyint(ab_nesting_level); memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf)); if(setjmp(addrbook_changed_unexpectedly)){ @@ -172,18 +219,27 @@ dprint(1, (debugfile, "RESETTING address book...addr_book_selnick!\n")); addrbook_reset(); -@@ -2037,8 +2037,8 @@ +@@ -2080,7 +2080,7 @@ + + ab_nesting_level++; + +- p = addr_book(SelectNick, "SELECT NICKNAME", NULL); ++ p = addr_book(SelectNick, "選擇暱稱", NULL); + + if(ab_nesting_level <= 1) + end_adrbks(); +@@ -2103,8 +2103,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}, ++ {"N", "次一個項目", {MC_NEXTITEM,1,{'n'}}, KS_NONE}, PREVPAGE_MENU, NEXTPAGE_MENU, NULL_MENU, -@@ -2061,10 +2061,10 @@ +@@ -2127,10 +2127,10 @@ HELP_MENU, OTHER_MENU, @@ -198,7 +254,7 @@ NULL_MENU, NULL_MENU, NULL_MENU, -@@ -2193,7 +2193,7 @@ +@@ -2259,7 +2259,7 @@ if(!init_addrbooks(HalfOpen, 1, !as.config, !are_selecting)){ if(are_selecting){ q_status_message(SM_ORDER | SM_DING, 0, 4, @@ -207,7 +263,7 @@ display_message(c); sleep(2); return NULL; -@@ -2201,7 +2201,7 @@ +@@ -2267,7 +2267,7 @@ else if(!as.config){ ps->next_screen = main_menu_screen; q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -216,7 +272,7 @@ ps->mangled_screen = 1; return NULL; } -@@ -2211,7 +2211,7 @@ +@@ -2277,7 +2277,7 @@ readonly_warning(NO_DING, NULL); else if(as.adrbks[0].access == NoAccess) q_status_message(SM_ORDER, 0, 4, @@ -225,18 +281,21 @@ } erase_checks(); -@@ -2342,8 +2342,8 @@ - char buf[80], *bp; +@@ -2422,10 +2422,10 @@ if(style == AddrBookScreen){ -- sprintf(buf, "ADDRESS BOOK%s%s%s", -- (!as.opened) ? " LIST" : -+ sprintf(buf, "地址簿%s%s%s", -+ (!as.opened) ? "列表" : - (as.n_addrbk > 1) ? " <" : "", - (as.opened && as.n_addrbk > 1 && pab->nickname) - ? pab->nickname : "", -@@ -2418,7 +2418,7 @@ + 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%s%s", +- is_custom_title ? " <" : cur_is_open() ? "" : " LIST", ++ sprintf(buf, "地址簿%s%s%s", ++ is_custom_title ? " <" : cur_is_open() ? "" : "列表", + is_custom_title ? pab->nickname : "", + is_custom_title ? ">" : ""); + +@@ -2490,7 +2490,7 @@ km->how_many = 1; clrbitn(OTHER_KEY, bitmap); @@ -245,7 +304,7 @@ KS_OSDATASET(&km->keys[TWO_KEY], KS_EXITMODE); /* -@@ -2431,22 +2431,22 @@ +@@ -2503,22 +2503,22 @@ clrbitn(THREE_KEY, bitmap); menu_init_binding(km, 'A', MC_ADDABOOK, "A", add_is_global(as.top_ent+as.cur_row) @@ -275,7 +334,7 @@ ADD_KEY); } } -@@ -2459,7 +2459,7 @@ +@@ -2531,7 +2531,7 @@ * The OTHER_KEY is used as the Exit key in selection mode. * This is because the TWO_KEY is being used for < actions. */ @@ -284,25 +343,47 @@ OTHER_KEY); KS_OSDATASET(&km->keys[OTHER_KEY], KS_EXITMODE); -@@ -2474,7 +2474,7 @@ - cmd = MC_POPUP; - - menu_init_binding(km, '<', cmd, "<", -- cmd == MC_POPUP ? "AddbkList" : "Unexpand", -+ cmd == MC_POPUP ? "地址簿列表" : "復原展開", - TWO_KEY); - menu_add_binding(km, ',', cmd); - if(F_ON(F_ARROW_NAV,ps)) -@@ -2489,7 +2489,7 @@ +@@ -2551,8 +2551,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)) +@@ -2563,16 +2563,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 +@@ -2584,7 +2584,7 @@ * key becomes the ViewAbook key. */ - if(entry_is_askserver(as.top_ent+as.cur_row)){ + 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); -@@ -2497,7 +2497,7 @@ +@@ -2592,7 +2592,7 @@ menu_add_binding(km, KEY_RIGHT, MC_QUERY_SERV); } else if(entry_is_clickable_title(as.top_ent+as.cur_row)){ @@ -311,16 +392,16 @@ THREE_KEY); menu_add_binding(km, 'v', MC_OPENABOOK); menu_add_binding(km, '.', MC_OPENABOOK); -@@ -2505,7 +2505,7 @@ +@@ -2600,7 +2600,7 @@ menu_add_binding(km, KEY_RIGHT, MC_OPENABOOK); } - else if(as.opened){ + 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 -@@ -2518,7 +2518,7 @@ +@@ -2613,7 +2613,7 @@ */ if(entry_is_clickable(as.top_ent+as.cur_row) && !entry_is_clickable_title(as.top_ent+as.cur_row)){ @@ -329,22 +410,22 @@ SENDTO_KEY); menu_add_binding(km, '.', MC_EXPAND); if(F_ON(F_ARROW_NAV,ps)) -@@ -2528,12 +2528,12 @@ +@@ -2623,12 +2623,12 @@ clrbitn(SENDTO_KEY, bitmap); - if(as.opened && as.checkboxes){ + 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(as.opened && listmode_ok){ + 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 -@@ -2550,7 +2550,7 @@ +@@ -2645,7 +2645,7 @@ * reasonable function call. */ km->keys[OTHER_KEY].name = "O"; @@ -353,20 +434,53 @@ km->keys[OTHER_KEY].bind.cmd = MC_OTHER; km->keys[OTHER_KEY].bind.ch[0] = 'O'; km->keys[OTHER_KEY].bind.nch = 1; -@@ -2569,18 +2569,18 @@ +@@ -2664,13 +2664,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); + } +@@ -2679,11 +2679,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); + } +@@ -2709,7 +2709,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); + } +@@ -2717,12 +2717,12 @@ if(as.n_addrbk > 1 || as.n_serv){ cmd = MC_POPUP; -- menu_init_binding(km, '<', cmd, "<", "AddbkList", -+ menu_init_binding(km, '<', cmd, "<", "地址簿列表", - TWO_KEY); + menu_init_binding(km, '<', cmd, "<", +- "AddressBkList", TWO_KEY); ++ "地址簿列表", TWO_KEY); + KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE); } else{ cmd = MC_MAIN; @@ -375,7 +489,7 @@ TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU); } -@@ -2592,9 +2592,9 @@ +@@ -2732,9 +2732,9 @@ /* * Add or delete entries from this address book. */ @@ -387,7 +501,7 @@ DELETE_KEY); } else{ -@@ -2604,14 +2604,14 @@ +@@ -2744,14 +2744,14 @@ /* Find someplace to put Main Menu command */ if(cmd == MC_POPUP){ @@ -404,7 +518,7 @@ SENDTO_KEY); KS_OSDATASET(&km->keys[SENDTO_KEY], KS_COMPOSER); } -@@ -2621,7 +2621,7 @@ +@@ -2761,7 +2761,7 @@ * non-selection mode. */ cmd = MC_MAIN; @@ -413,76 +527,39 @@ TWO_KEY); KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU); -@@ -2661,10 +2661,10 @@ +@@ -2800,10 +2800,10 @@ cmd = MC_VIEW_ENTRY; menu_init_binding(km, '>', cmd, ">", - cmd == MC_EXPAND ? "[Expand]" : - cmd == MC_QUERY_SERV ? "[Search]" : -- as.opened ? "[View/Update]" -- : "[ViewAbook]", +- cur_is_open() ? "[View/Update]" +- : "[ViewAbook]", + cmd == MC_EXPAND ? "[展開]" : + cmd == MC_QUERY_SERV ? "[搜尋]" : -+ as.opened ? "[檢視/更新]" -+ : "[檢視地址簿]", ++ cur_is_open() ? "[檢視/更新]" ++ : "[檢視地址簿]", THREE_KEY); if(cmd == MC_QUERY_SERV) -@@ -2777,34 +2777,34 @@ +@@ -2941,13 +2941,13 @@ } - if(as.config){ -- helper(h_abook_config, "HELP ON CONFIGURING ADDRESS BOOKS", -+ helper(h_abook_config, "設定地址簿的輔助說明", - HLPD_NONE); - } - else if(are_selecting){ - if(as.opened){ - /* single nick select from TakeAddr */ - if(style == SelectNickTake) -- helper(h_abook_select_nicks_take, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_nicks_take, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - /* single nick select from addrbook */ - else if(selecting_one_nick) -- helper(h_abook_select_nick, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_nick, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - /* can use X checkbox command now */ - else if(as.checkboxes) -- helper(h_abook_select_checks, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_checks, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - /* ListMode command available */ - else if(listmode_ok) -- helper(h_abook_select_listmode, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_listmode, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - /* no ListMode command available */ - else -- helper(h_abook_select_addr, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_addr, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - } - else{ -- helper(h_abook_select_top, "HELP ON ADDRESS BOOK", -+ helper(h_abook_select_top, "地址簿的輔助說明", - HLPD_SIMPLE | HLPD_NEWWIN); - } - } -@@ -2812,9 +2812,9 @@ - else{ - ps->next_screen = SCREEN_FUN_NULL; - if(as.opened) -- helper(h_abook_opened, "HELP ON ADDRESS BOOK", HLPD_NONE); -+ helper(h_abook_opened, "地址簿的輔助說明", HLPD_NONE); - else -- helper(h_abook_top, "HELP ON ADDRESS BOOK", HLPD_NONE); -+ helper(h_abook_top, "地址簿的輔助說明", HLPD_NONE); - } + 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); /* -@@ -2887,7 +2887,7 @@ + * Helper() may have a Main Menu key. If user types that +@@ -3021,7 +3021,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -491,7 +568,7 @@ break; -@@ -2923,7 +2923,7 @@ +@@ -3057,7 +3057,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -500,7 +577,7 @@ break; -@@ -2984,11 +2984,11 @@ +@@ -3128,11 +3128,11 @@ } else if(dlc_to_flush->type == DlcTitleNoPerm) q_status_message(SM_ORDER, 0, 4, @@ -514,7 +591,7 @@ break; -@@ -3034,7 +3034,7 @@ +@@ -3178,7 +3178,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -523,7 +600,7 @@ break; -@@ -3046,7 +3046,7 @@ +@@ -3190,7 +3190,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, @@ -532,7 +609,7 @@ break; } -@@ -3068,7 +3068,7 @@ +@@ -3212,7 +3212,7 @@ } else if(as.checkboxes && checkedn <= 0){ q_status_message(SM_ORDER, 0, 1, @@ -541,7 +618,7 @@ break; } else if(as.checkboxes){ -@@ -3152,7 +3152,7 @@ +@@ -3296,7 +3296,7 @@ if(selecting_mult_nicks){ if(dl->type != ListHead && style == SelectAddrLccCom){ q_status_message(SM_ORDER, 0, 4, @@ -550,7 +627,7 @@ break; } else{ -@@ -3214,16 +3214,16 @@ +@@ -3358,16 +3358,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)) @@ -570,7 +647,7 @@ break; -@@ -3247,7 +3247,7 @@ +@@ -3391,7 +3391,7 @@ if(adrbk_check_all_validity_now()){ if(resync_screen(pab, style, checkedn)){ q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -579,7 +656,7 @@ ps->mangled_screen = 1; break; } -@@ -3262,7 +3262,7 @@ +@@ -3406,7 +3406,7 @@ dprint(9, (debugfile, "Calling edit_entry to add entry manually\n")); edit_entry(pab->address_book, (AdrBk_Entry *)NULL, NO_NEXT, @@ -588,7 +665,7 @@ /* * Warped means we got plopped down somewhere in the display -@@ -3406,7 +3406,7 @@ +@@ -3551,7 +3551,7 @@ } else{ q_status_message1(SM_ORDER|SM_DING, 0, 4, @@ -597,7 +674,7 @@ if(nick) fs_give((void **)&nick); if(file) -@@ -3442,7 +3442,7 @@ +@@ -3586,7 +3586,7 @@ ps->mangled_screen = 1; } else @@ -606,7 +683,7 @@ break; -@@ -3450,7 +3450,7 @@ +@@ -3594,7 +3594,7 @@ /*---------- Delete an address book -------------------*/ case MC_DELABOOK: if(as.n_addrbk == 0){ @@ -615,7 +692,7 @@ break; } -@@ -3505,7 +3505,7 @@ +@@ -3665,7 +3665,7 @@ start_disp = 0; ps->mangled_body = 1; ps->mangled_footer = 1; @@ -624,7 +701,7 @@ } else{ if(err){ -@@ -3523,7 +3523,7 @@ +@@ -3683,7 +3683,7 @@ case MC_SHUFFLE: if(entry_is_addkey(as.top_ent+as.cur_row)){ q_status_message(SM_ORDER, 0, 4, @@ -633,7 +710,7 @@ break; } -@@ -3596,8 +3596,8 @@ +@@ -3756,8 +3756,8 @@ q_status_message(SM_ORDER, 0, 3, msg ? msg : @@ -644,25 +721,25 @@ if(ret < 0) dprint(5, (debugfile, "addrbook shuffle failed: %s\n", msg ? msg : "?")); -@@ -3615,7 +3615,7 @@ - case MC_PREVITEM: - r = prev_selectable_line(as.cur_row+as.top_ent, &new_line); - if(r == 0){ -- q_status_message(SM_INFO, 0, 1, "Already on first line."); -+ q_status_message(SM_INFO, 0, 1, "已經在第一行了。"); - break; - } +@@ -3784,7 +3784,7 @@ -@@ -3654,7 +3654,7 @@ - case MC_NEXTITEM: - r = next_selectable_line(as.cur_row+as.top_ent, &new_line); - if(r == 0){ -- q_status_message(SM_INFO, 0, 1, "Already on last line."); -+ q_status_message(SM_INFO, 0, 1, "已經在最後一行了。"); - break; - } + 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); +@@ -3842,7 +3842,7 @@ -@@ -3733,7 +3733,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)); +@@ -3930,7 +3930,7 @@ #endif default: q_status_message(SM_INFO, 0, 1, @@ -671,7 +748,7 @@ break; } } -@@ -3786,7 +3786,7 @@ +@@ -4037,7 +4037,7 @@ break; if(as.top_ent == new_top_ent && as.cur_row == (fl-as.top_ent)){ @@ -680,16 +757,16 @@ break; } -@@ -3809,7 +3809,7 @@ - else{ - new_top_ent = as.top_ent; - if(as.cur_row == (fl - as.top_ent)){ /* no change */ -- q_status_message(SM_INFO,0,1,"Already on last page."); -+ q_status_message(SM_INFO,0,1,"已經在最後一頁了。"); - break; - } - } -@@ -3848,14 +3848,14 @@ +@@ -4073,7 +4073,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 -= +@@ -4122,14 +4122,14 @@ if(adrbk_check_all_validity_now()){ if(resync_screen(pab, style, checkedn)){ q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -706,16 +783,16 @@ break; } -@@ -3917,7 +3917,7 @@ +@@ -4191,7 +4191,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, "沒有可供選擇的項目"); ++ q_status_message(SM_ORDER, 0, 4, "沒有可供刪除的項目"); break; } -@@ -3936,10 +3936,10 @@ +@@ -4210,10 +4210,10 @@ if(style == SelectAddrLccCom && dl->type == ListEnt) q_status_message(SM_ORDER, 0, 4, @@ -728,7 +805,7 @@ else if(dl->type == ListHead || dl->type == Simple){ current_changed_flag++; if(entry_is_checked(pab->address_book->checks, -@@ -3956,11 +3956,11 @@ +@@ -4230,11 +4230,11 @@ } else q_status_message(SM_ORDER, 0, 4, @@ -742,16 +819,7 @@ break; -@@ -3968,7 +3968,7 @@ - /*------ Turn all checkboxes on ---------*/ - case MC_SELALL: - 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; - } - -@@ -4018,7 +4018,7 @@ +@@ -4252,7 +4252,7 @@ ps->mangled_body = 1; start_disp = 0; q_status_message(SM_ORDER, 0, 4, @@ -760,7 +828,7 @@ break; -@@ -4038,13 +4038,13 @@ +@@ -4272,13 +4272,13 @@ if(!directory_ok){ q_status_message(SM_ORDER, 0, 4, (style == SelectAddrLccCom) @@ -777,7 +845,7 @@ break; } -@@ -4099,7 +4099,7 @@ +@@ -4333,14 +4333,14 @@ /*----- Select entries to work on --*/ case MC_SELECT: if(!any_addrs_avail(as.top_ent+as.cur_row)){ @@ -786,7 +854,15 @@ break; } -@@ -4134,7 +4134,7 @@ + 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); + +@@ -4373,7 +4373,7 @@ /*----------- Select current entry ----------*/ case MC_SELCUR: if(!any_addrs_avail(as.top_ent+as.cur_row)){ @@ -795,7 +871,7 @@ break; } -@@ -4195,7 +4195,7 @@ +@@ -4434,7 +4434,7 @@ dlc_restart = *dlc; as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, @@ -804,7 +880,7 @@ warp_to_dlc(&dlc_restart, 0L); /* put current entry in middle of screen */ -@@ -4262,11 +4262,11 @@ +@@ -4501,11 +4501,11 @@ } else q_status_message(SM_ORDER, 0, 4, @@ -818,7 +894,7 @@ break; -@@ -4279,7 +4279,7 @@ +@@ -4518,7 +4518,7 @@ : NULL, &start_disp); else{ @@ -827,7 +903,7 @@ ab_unzoom(&start_disp); } -@@ -4321,7 +4321,7 @@ +@@ -4560,7 +4560,7 @@ } else q_status_message(SM_ORDER, 0, 2, @@ -836,7 +912,7 @@ break; -@@ -4377,7 +4377,7 @@ +@@ -4606,7 +4606,7 @@ /*------ Copy entries into an abook ----*/ case MC_SAVE: if(!any_addrs_avail(as.top_ent+as.cur_row)){ @@ -845,7 +921,7 @@ break; } -@@ -4399,7 +4399,7 @@ +@@ -4628,7 +4628,7 @@ /*------ Forward an entry in mail -----------*/ case MC_FORWARD: if(!any_addrs_avail(as.top_ent+as.cur_row)){ @@ -854,7 +930,7 @@ break; } -@@ -4414,14 +4414,14 @@ +@@ -4643,14 +4643,14 @@ } if(!is_addr(as.top_ent+as.cur_row)){ @@ -871,7 +947,7 @@ break; } -@@ -4453,18 +4453,18 @@ +@@ -4682,18 +4682,18 @@ case MC_UNKNOWN: if(c == 'e' && !are_selecting){ q_status_message(SM_ORDER | SM_DING, 0, 2, @@ -893,25 +969,25 @@ break; } /* else, fall through */ -@@ -4499,7 +4499,7 @@ +@@ -4731,7 +4731,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(as.opened){ + if(cur_is_open()){ dl = dlist(as.top_ent+as.cur_row); if((dl->type == ListHead || -@@ -4540,7 +4540,7 @@ +@@ -4779,7 +4779,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, "沒有已選擇的項目可供縮放"); ++ q_status_message(SM_ORDER, 0, 2, "沒有已選擇的項目可供放大"); } } -@@ -4601,7 +4601,7 @@ +@@ -4840,7 +4840,7 @@ char *name; { q_status_message2(SM_ORDER | (bell ? SM_DING : 0), 0, 4, @@ -920,7 +996,7 @@ name ? " " : "", name ? name : ""); } -@@ -4622,11 +4622,11 @@ +@@ -4861,11 +4861,11 @@ dl = dlist(cur_line); if(dl->type == NoAbooks) q_status_message(SM_ORDER, 0, 4, @@ -935,20 +1011,20 @@ } -@@ -4643,9 +4643,9 @@ +@@ -4882,9 +4882,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 ? "Address Book" -- : "Distribution List"); +- (dl->type == Title || dl->type == ClickHereCmb) ? "Address Book" +- : "Distribution List"); + q_status_message1(SM_ORDER, 0, 4, "%s 未被展開,使用 \">\" 來展開", -+ dl->type == Title ? "地址簿" -+ : "分類列表"); ++ (dl->type == Title || dl->type == ClickHereCmb) ? "地址簿" ++ : "分類列表"); } -@@ -4661,7 +4661,7 @@ +@@ -4900,7 +4900,7 @@ char *what; { q_status_message1(SM_INFO | (bell ? SM_DING : 0), 0, 2, @@ -957,7 +1033,7 @@ } -@@ -4671,7 +4671,7 @@ +@@ -4910,7 +4910,7 @@ void no_tabs_warning() { @@ -966,7 +1042,7 @@ } -@@ -4690,11 +4690,11 @@ +@@ -4929,11 +4929,11 @@ { int ret = 0; static ESCKEY_S opts[] = { @@ -983,7 +1059,16 @@ { 0, '%', "", ""}, {-1, 0, NULL, NULL}}; -@@ -4726,7 +4726,7 @@ +@@ -4942,7 +4942,7 @@ + + opts[5].ch = (F_ON(F_ENABLE_PRYNT, ps_global)) ? 'y' : -1; + +- switch(radio_buttons("APPLY command : ", command_line, opts, 0, 'z', ++ switch(radio_buttons("套用命令:", command_line, opts, 0, 'z', + NO_HELP, RB_NORM)){ + case 'c': + ret = ab_compose_to_addr(cur_line, 1); +@@ -4965,7 +4965,7 @@ break; case 'z': @@ -992,7 +1077,7 @@ break; } -@@ -4748,22 +4748,22 @@ +@@ -4987,22 +4987,22 @@ int *start_disp; { static ESCKEY_S sel_opts1[] = { @@ -1007,8 +1092,7 @@ + {'f', 'f', "F", "切換選擇"}, {-1, 0, NULL, NULL} }; -- static char *sel_pmt1 = "ALTER message selection : "; -+ static char *sel_pmt1 = "更改訊息選擇:"; + static char *sel_pmt1 = "ALTER message selection : "; static ESCKEY_S sel_opts2[] = { - {'a', 'a', "A", "select All"}, - {'c', 'c', "C", "select Cur"}, @@ -1025,7 +1109,7 @@ ESCKEY_S *sel_opts; HelpType help = NO_HELP; adrbk_cntr_t num, ab_count; -@@ -4791,8 +4791,8 @@ +@@ -5030,8 +5030,8 @@ if(dl && (dl->type == ListHead || dl->type == Simple)){ sel_opts1[1].label = entry_is_selected(abook->selects, (a_c_arg_t)dl->elnum) @@ -1036,7 +1120,7 @@ sel_opts1[1].ch = 'c'; } else -@@ -4814,7 +4814,7 @@ +@@ -5053,7 +5053,7 @@ default: q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -1045,7 +1129,7 @@ return; } } -@@ -4823,8 +4823,8 @@ +@@ -5062,8 +5062,8 @@ (dl->type == ListHead || dl->type == Simple)){ sel_opts1[1].label = entry_is_selected(abook->selects, (a_c_arg_t)dl->elnum) @@ -1056,7 +1140,7 @@ sel_opts1[1].ch = 'c'; } else -@@ -4841,7 +4841,7 @@ +@@ -5080,7 +5080,7 @@ switch(q){ case 'x': /* cancel */ @@ -1065,7 +1149,7 @@ break; case 'c': /* select/unselect current */ -@@ -4853,7 +4853,7 @@ +@@ -5092,7 +5092,7 @@ if(as.selections == 0 && as.zoomed){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, @@ -1074,7 +1158,7 @@ do_warp++; } else if(as.zoomed){ -@@ -4892,7 +4892,7 @@ +@@ -5131,17 +5131,17 @@ if(as.selections == 0 && as.zoomed){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, @@ -1083,7 +1167,20 @@ do_warp++; } else{ -@@ -4918,7 +4918,7 @@ + char bb[100]; + +- sprintf(bb, "%s entries UNselected%s%s%s", ++ sprintf(bb, "%s 個項目被取消選擇%s%s%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++; +@@ -5157,7 +5157,7 @@ } } @@ -1092,7 +1189,7 @@ comatose(ab_count)); if(prevsel == 0 && as.selections > 0 && !as.zoomed && F_ON(F_AUTO_ZOOM, ps)){ -@@ -4955,14 +4955,14 @@ +@@ -5194,14 +5194,14 @@ do_beginning++; else{ as.zoomed = 0; @@ -1109,7 +1206,7 @@ comatose(as.selections)); break; -@@ -4988,7 +4988,7 @@ +@@ -5227,7 +5227,7 @@ if(as.selections == 0){ as.zoomed = 0; q_status_message(SM_ORDER, 0, 2, @@ -1118,7 +1215,7 @@ do_warp++; } else -@@ -5007,63 +5007,63 @@ +@@ -5246,63 +5246,63 @@ if(prevsel == as.selections && prevsel > 0){ if(as.selections == 1) q_status_message(SM_ORDER, 0, 2, @@ -1143,7 +1240,7 @@ else q_status_message(SM_ORDER, 0, 2, - "Select failed! No entries selected"); -+ "選擇失敗! 沒有任何項目被選擇"); ++ "選擇失敗!沒有任何項目被選擇"); } else if(as.selections == 0){ if(prevsel == 1) @@ -1196,7 +1293,7 @@ comatose(as.selections-prevsel), comatose(as.selections)); } -@@ -5073,13 +5073,13 @@ +@@ -5312,17 +5312,17 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -1206,13 +1303,18 @@ } } else{ - q_status_message(SM_ORDER | SM_DING, 3, 3, -- "Select is not supported from the top-level view"); -+ "尚未支援自頂層視角選擇"); + 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; } - -@@ -5137,11 +5137,11 @@ +@@ -5381,11 +5381,11 @@ int narrow; { static ESCKEY_S ab_sel_type_opt[] = { @@ -1227,7 +1329,7 @@ int type; adrbk_cntr_t num, ab_count; -@@ -5159,7 +5159,7 @@ +@@ -5403,7 +5403,7 @@ break; case 'x': @@ -1236,7 +1338,7 @@ return -1; default: -@@ -5279,7 +5279,7 @@ +@@ -5523,7 +5523,7 @@ } if(type == 'x' || r == 'x'){ @@ -1245,7 +1347,7 @@ return -1; } -@@ -5362,7 +5362,7 @@ +@@ -5606,7 +5606,7 @@ break; default: @@ -1254,7 +1356,7 @@ return(err); } -@@ -5481,18 +5481,18 @@ +@@ -5725,18 +5725,18 @@ new_top_ent = NO_LINE; if(rc == -2) @@ -1277,16 +1379,16 @@ /* know match is on the same page */ if(!*warped && -@@ -6115,7 +6115,7 @@ +@@ -6378,7 +6378,7 @@ dprint(7, (debugfile, "- search_book -\n")); - sprintf(prompt, "Word to search for [%s]: ", search_string); -+ sprintf(prompt, "欲搜尋的字串 [%s]:", search_string); ++ sprintf(prompt, "欲搜尋的字串 [%s]: ", search_string); help = NO_HELP; nsearch_string[0] = '\0'; -@@ -6127,12 +6127,12 @@ +@@ -6390,12 +6390,12 @@ ekey[1].ch = ctrl('Y'); ekey[1].rval = 10; ekey[1].name = "^Y"; @@ -1301,7 +1403,7 @@ ekey[3].ch = -1; -@@ -6149,11 +6149,11 @@ +@@ -6412,11 +6412,11 @@ warp_to_beginning(); /* go to top of addrbooks */ if((nl=first_selectable_line(0L)) != NO_LINE){ *new_line = nl; @@ -1315,7 +1417,7 @@ return -1; } } -@@ -6162,11 +6162,11 @@ +@@ -6425,11 +6425,11 @@ warp_to_end(); /* go to bottom */ if((nl=first_selectable_line(0L)) != NO_LINE){ *new_line = nl; diff --git a/chinese/pine4/files/patch-aw b/chinese/pine4/files/patch-aw index a1d2bf8b4f78..f2f18544613d 100644 --- a/chinese/pine4/files/patch-aw +++ b/chinese/pine4/files/patch-aw @@ -1,5 +1,5 @@ ---- pine/adrbkcmd.c.orig Wed Sep 16 06:11:08 1998 -+++ pine/adrbkcmd.c Tue Sep 22 18:58:32 1998 +--- pine/adrbkcmd.c.orig Sat Jan 30 03:57:55 1999 ++++ pine/adrbkcmd.c Mon Feb 22 22:36:14 1999 @@ -112,23 +112,23 @@ static struct key abook_view_keys[] = {HELP_MENU, @@ -121,28 +121,26 @@ */ 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", -- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, -+ verify_nick, NULL, NULL, addr_book_nick_for_edit, "地址簿", -+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, KS_NONE}, +- 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, view_message_for_pico, "資料匣", +- 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", -- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}, -+ NULL, NULL, NULL, folders_for_fcc, "資料匣", -+ 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, KS_NONE}, +- 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, view_message_for_pico, "資料匣", +- 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", -+ verify_addr, NULL, NULL, addr_book_change_list, "地址簿", +- 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, NULL, NO_HELP, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE} @@ -951,7 +951,7 @@ pbuf.canceltest = warped ? pico_cancel_for_adrbk_edit @@ -153,7 +151,7 @@ pbuf.resize = resize_for_pico; pbuf.winch_cleanup = winch_cleanup; pbuf.suspend = do_suspend; -@@ -966,7 +966,7 @@ +@@ -967,7 +967,7 @@ pbuf.browse_help = h_composer_browse; pbuf.attach_help = h_composer_ctrl_j; pbuf.composer_help = h_composer; @@ -162,7 +160,7 @@ readonly ? 'V' : islower((unsigned char)(*cmd)) ? toupper((unsigned char)*cmd) : *cmd, -@@ -1551,12 +1551,12 @@ +@@ -1559,12 +1559,12 @@ ps_global->redrawer = redraw_pico; fix_windsize(ps_global); @@ -177,7 +175,7 @@ break; } -@@ -1580,8 +1580,8 @@ +@@ -1588,8 +1588,8 @@ char *rstr = NULL; void (*redraw)() = ps_global->redrawer; @@ -188,7 +186,7 @@ ps_global->redrawer = redraw_pico; fix_windsize(ps_global); -@@ -1604,7 +1604,7 @@ +@@ -1612,7 +1612,7 @@ pico_cancel_for_adrbk_take(redraw_pico) void (*redraw_pico)(); { @@ -197,7 +195,7 @@ } -@@ -1612,7 +1612,7 @@ +@@ -1620,7 +1620,7 @@ pico_cancel_for_adrbk_edit(redraw_pico) void (*redraw_pico)(); { @@ -206,7 +204,7 @@ } -@@ -1729,16 +1729,16 @@ +@@ -1737,16 +1737,16 @@ if(ps_global->readonly_pinerc){ q_status_message1(SM_ORDER, 0, 3, @@ -227,7 +225,7 @@ return -1; } -@@ -1787,7 +1787,7 @@ +@@ -1796,7 +1796,7 @@ pbuf.browse_help = h_composer_browse; pbuf.attach_help = h_composer_ctrl_j; pbuf.composer_help = h_composer; @@ -236,7 +234,7 @@ pbuf.pine_anchor = set_titlebar(titlebar, ps_global->mail_stream, ps_global->context_current, -@@ -1856,8 +1856,8 @@ +@@ -1916,8 +1916,8 @@ if(editor_result & COMP_CANCEL){ ret = -1; q_status_message1(SM_ORDER, 0, 3, @@ -247,7 +245,7 @@ } else if(editor_result & COMP_EXIT){ if(!strcmp(server, def_serv ? def_serv : "") && -@@ -1865,8 +1865,8 @@ +@@ -1925,8 +1925,8 @@ !strcmp(nickname, def_nick ? def_nick : "")){ ret = -1; q_status_message1(SM_ORDER, 0, 3, @@ -258,7 +256,7 @@ } else{ -@@ -1936,8 +1936,8 @@ +@@ -1993,8 +1993,8 @@ if(*tmp == '\0'){ q_status_message1(SM_ORDER, 0, 3, @@ -269,7 +267,7 @@ ret = -1; goto get_out; } -@@ -1962,8 +1962,8 @@ +@@ -2019,8 +2019,8 @@ if(set_variable_list(global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK, new_list, TRUE)){ q_status_message1(SM_ORDER, 0, 3, @@ -280,7 +278,7 @@ set_current_val(&vars[global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK], TRUE, FALSE); -@@ -2137,7 +2137,7 @@ +@@ -2191,7 +2191,7 @@ if(ps_global->readonly_pinerc){ if(err) @@ -289,7 +287,7 @@ return -1; } -@@ -2154,10 +2154,10 @@ +@@ -2208,10 +2208,10 @@ if(err){ if(pab->type & GLOBAL) *err = @@ -302,7 +300,7 @@ } return -1; -@@ -2210,8 +2210,8 @@ +@@ -2264,8 +2264,8 @@ if(cnt > 1){ static ESCKEY_S opts[] = { @@ -313,7 +311,7 @@ {-1, 0, NULL, NULL}}; sprintf(tmp, -@@ -2229,7 +2229,7 @@ +@@ -2283,7 +2283,7 @@ case 'x': if(err) @@ -322,7 +320,7 @@ return -1; } -@@ -2240,7 +2240,7 @@ +@@ -2294,7 +2294,7 @@ case 'n': case 'x': if(err) @@ -331,7 +329,7 @@ return -1; -@@ -2285,7 +2285,7 @@ +@@ -2339,7 +2339,7 @@ case 'x': /* Cancel */ default: if(err) @@ -340,7 +338,7 @@ return -1; } -@@ -2305,7 +2305,7 @@ +@@ -2359,7 +2359,7 @@ case 'x': default: if(err) @@ -349,7 +347,7 @@ return -1; -@@ -2366,7 +2366,7 @@ +@@ -2420,7 +2420,7 @@ case 'n': default: if(err) @@ -358,7 +356,7 @@ return -1; } -@@ -2505,7 +2505,7 @@ +@@ -2559,7 +2559,7 @@ /* this also frees old variable contents for us */ if(set_variable_list(varnum, new_list, TRUE)){ if(err) @@ -367,7 +365,7 @@ set_current_val(&vars[varnum], TRUE, FALSE); free_list_array(&new_list); -@@ -2572,7 +2572,7 @@ +@@ -2626,7 +2626,7 @@ if(ps_global->readonly_pinerc){ if(msg) @@ -376,7 +374,7 @@ return -1; } -@@ -2582,12 +2582,12 @@ +@@ -2636,12 +2636,12 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; @@ -391,7 +389,7 @@ opts[i].ch = -1; deefault = 'u'; -@@ -2595,7 +2595,7 @@ +@@ -2649,7 +2649,7 @@ if(pab->type & GLOBAL){ if(vars[V_GLOB_ADDRBOOK].is_fixed){ if(msg) @@ -400,7 +398,7 @@ return -1; } -@@ -2615,7 +2615,7 @@ +@@ -2669,7 +2669,7 @@ else{ if(vars[V_ADDRESSBOOK].is_fixed){ if(msg) @@ -409,7 +407,7 @@ return -1; } -@@ -2654,7 +2654,7 @@ +@@ -2708,7 +2708,7 @@ if(rv == 'x'){ if(msg) @@ -418,7 +416,7 @@ return -1; } -@@ -2697,7 +2697,7 @@ +@@ -2751,7 +2751,7 @@ enum {NotSet, Pers, Glob, Empty} type1, type2; int i, j, retval = -1; struct variable *vars = ps_global->vars; @@ -427,7 +425,7 @@ dprint(5, (debugfile, "- do_the_shuffle(%d, %d) -\n", anum1, anum2)); -@@ -2711,7 +2711,7 @@ +@@ -2765,7 +2765,7 @@ if(type1 == Empty){ if(msg) *msg = @@ -436,7 +434,7 @@ return(retval); } -@@ -2728,14 +2728,14 @@ +@@ -2782,14 +2782,14 @@ if((type1 == Pers || type2 == Pers) && vars[V_ADDRESSBOOK].is_fixed){ if(msg) @@ -453,7 +451,7 @@ return(retval); } -@@ -3207,7 +3207,7 @@ +@@ -3261,7 +3261,7 @@ AdrBk_Entry *abe; VCARD_INFO_S *vinfo; static ESCKEY_S ab_export_opts[] = { @@ -462,7 +460,7 @@ {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; static ESCKEY_S vcard_or_addresses[] = { -@@ -3230,7 +3230,7 @@ +@@ -3284,7 +3284,7 @@ switch(i){ case 'x': @@ -471,7 +469,7 @@ return(ret); case 'a': -@@ -3259,7 +3259,7 @@ +@@ -3313,7 +3313,7 @@ ab_export_opts[++r].ch = ctrl('I'); ab_export_opts[r].rval = 11; ab_export_opts[r].name = "TAB"; @@ -480,7 +478,7 @@ } ab_export_opts[++r].ch = -1; -@@ -3272,7 +3272,7 @@ +@@ -3326,7 +3326,7 @@ if(r < 0){ switch(r){ case -1: @@ -489,7 +487,7 @@ break; case -2: -@@ -3656,7 +3656,7 @@ +@@ -3711,7 +3711,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); @@ -498,16 +496,16 @@ goto bomb; case 'y': -@@ -3740,7 +3740,7 @@ +@@ -3795,7 +3795,7 @@ gf_clear_so_writec((STORE_S *) pb->contents.text.data); -- pine_send(outgoing, &body, "FORWARDING ADDRESS BOOK ENTRY", NULL, -+ pine_send(outgoing, &body, "轉寄地址簿項目", NULL, +- pine_send(outgoing, &body, "FORWARDING ADDRESS BOOK ENTRY", NULL, NULL, ++ pine_send(outgoing, &body, "轉寄地址簿項目", NULL, NULL, NULL, NULL, NULL, NULL, 0); ps->mangled_screen = 1; -@@ -4207,8 +4207,8 @@ +@@ -4262,8 +4262,8 @@ char tmp[200]; ACTION_LIST_S *action_list = NULL, *al; static ESCKEY_S save_or_export[] = { @@ -518,7 +516,7 @@ {-1, 0, NULL, NULL}}; sprintf(tmp, "Save%s to address book or Export to filesystem ? ", -@@ -4219,7 +4219,7 @@ +@@ -4274,7 +4274,7 @@ h_ab_save_exp, RB_NORM); switch(i){ case 'x': @@ -527,7 +525,7 @@ return(0); case 'e': -@@ -4405,7 +4405,7 @@ +@@ -4457,7 +4457,7 @@ if(action_list) fs_give((void **)&action_list); @@ -536,7 +534,7 @@ return(ret); } -@@ -4594,7 +4594,7 @@ +@@ -4638,7 +4638,7 @@ q_status_message(SM_ORDER | SM_DING, 3, 4, "Save only partially completed"); else @@ -545,9 +543,9 @@ } else if (how_many_to_copy + how_many_no_action - (skip_dups ? how_many_dups : 0) > 0){ -@@ -4670,15 +4670,15 @@ - - if(!agg && as.opened){ +@@ -4715,15 +4715,15 @@ + curopen = cur_is_open(); + if(!agg && curopen){ static ESCKEY_S prt[] = { - {'a', 'a', "A", "AddressBook"}, - {'e', 'e', "E", "Entry"}, @@ -564,7 +562,7 @@ ps_global->mangled_footer = 1; return 0; -@@ -4749,7 +4749,7 @@ +@@ -4794,7 +4794,7 @@ switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward, WT_NORM)){ case 'x': @@ -573,17 +571,17 @@ ps_global->mangled_footer = 1; return 0; -@@ -4973,7 +4973,7 @@ - lineno = 0L; - - if(as.opened) -- print_text1(" ADDRESS BOOK %s\n\n", -+ print_text1(" 地址簿 %s\n\n", - as.adrbks[as.cur].nickname); - - -@@ -5028,7 +5028,7 @@ - dprint(2, (debugfile, "- ab_delete -\n")); +@@ -5068,7 +5068,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; + } +@@ -5134,7 +5134,7 @@ + dprint(2, (debugfile, "- ab_agg_delete -\n")); if(agg){ - sprintf(prompt, "Really delete %d selected entries", as.selections); @@ -591,16 +589,16 @@ ch = want_to(prompt, 'n', 'n', NO_HELP, WT_NORM); if(ch == 'y'){ adrbk_cntr_t newelnum, flushelnum = NO_NEXT; -@@ -5193,7 +5193,7 @@ +@@ -5301,7 +5301,7 @@ } } else -- cmd_cancelled("Apply command"); -+ cmd_cancelled("套用命令"); +- cmd_cancelled("Apply Delete command"); ++ cmd_cancelled("套用刪除命令"); } return(ret); -@@ -5241,7 +5241,7 @@ +@@ -5349,7 +5349,7 @@ ? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf, abe->fullname, NULL) : abe->nickname ? abe->nickname : ""; @@ -609,7 +607,7 @@ break; case ListHead: -@@ -5249,13 +5249,13 @@ +@@ -5357,13 +5357,13 @@ ? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf, abe->fullname, NULL) : abe->nickname ? abe->nickname : ""; @@ -625,7 +623,7 @@ break; } -@@ -5354,7 +5354,7 @@ +@@ -5462,7 +5462,7 @@ return 0; } else{ @@ -634,7 +632,7 @@ return 0; } } -@@ -5490,7 +5490,7 @@ +@@ -5598,7 +5598,7 @@ if(r == 1 || r != 10 && fbuf[0] == '\0'){ ps->mangled_footer = 1; if(error) @@ -643,7 +641,7 @@ return(ret); } -@@ -5529,7 +5529,7 @@ +@@ -5638,7 +5638,7 @@ pbuf.browse_help = h_composer_browse; pbuf.attach_help = h_composer_ctrl_j; pbuf.composer_help = h_composer; @@ -652,15 +650,19 @@ ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder, -@@ -5777,13 +5777,13 @@ +@@ -5895,14 +5895,14 @@ + static struct key ldap_view_keys[] = {HELP_MENU, - NULL_MENU, +- {"V","ViewLink",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, - {"<","Results Index",{MC_EXIT,2,{'<',','}},KS_NONE}, ++ {"V","檢視鏈結",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE}, + {"<","結果索引",{MC_EXIT,2,{'<',','}},KS_NONE}, PRYNTTXT_MENU, - NULL_MENU, - 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}, PREVPAGE_MENU, NEXTPAGE_MENU, - {"C", "ComposeTo", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER}, @@ -668,13 +670,14 @@ FWDEMAIL_MENU, SAVE_MENU, WHEREIS_MENU}; -@@ -5812,12 +5812,12 @@ +@@ -5935,13 +5935,13 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(srcstore); sargs.text.src = srctype; - sargs.text.desc = "expanded entry"; -- sargs.bar.title = "DIRECTORY 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; @@ -684,7 +687,7 @@ sargs.keys.menu = &ldap_view_keymenu; setbitmap(sargs.keys.bitmap); -@@ -6174,7 +6174,7 @@ +@@ -6412,7 +6412,7 @@ struct headerentry *he; void (*redraw_pico)(); { diff --git a/chinese/pine4/files/patch-ax b/chinese/pine4/files/patch-ax index 84040b7b9935..367d902475d7 100644 --- a/chinese/pine4/files/patch-ax +++ b/chinese/pine4/files/patch-ax @@ -1,8 +1,22 @@ ---- pine/folder.c.orig Thu Sep 17 01:12:27 1998 -+++ pine/folder.c Tue Sep 22 19:05:59 1998 -@@ -62,13 +62,13 @@ - ((X)->dir->status&CNTXT_PARTFIND) == 0) +--- pine/folder.c.orig Fri Feb 5 05:47:33 1999 ++++ pine/folder.c Wed Feb 24 02:50:43 1999 +@@ -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_NAME(X) ((X) ? ((X)->nickname ? (X)->nickname : (X)->name) :"") +@@ -70,13 +70,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" @@ -20,21 +34,24 @@ #define mail_list(S, R, N) mail_list_internal(S, R, N) -@@ -281,18 +281,18 @@ +@@ -313,21 +313,21 @@ /* * 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_PREVITEM, 1, {'p'}}, KS_NONE} --#define NEXTF_MENU {"N", "NextFldr", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE} --#define CIND_MENU {"I", "CurIndex", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX} +-#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_PREVITEM, 1, {'p'}}, KS_NONE} -+#define NEXTF_MENU {"N", "次一資料匣", {MC_NEXTITEM, 2, {'n',TAB}}, 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 key context_mgr_keys[] = @@ -47,7 +64,7 @@ {MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, -@@ -324,15 +324,15 @@ +@@ -359,15 +359,15 @@ static struct key context_cfg_keys[] = {HELP_MENU, OTHER_MENU, @@ -67,7 +84,7 @@ WHEREIS_MENU, HELP_MENU, -@@ -351,9 +351,9 @@ +@@ -386,9 +386,9 @@ static struct key context_select_keys[] = {HELP_MENU, @@ -79,7 +96,7 @@ {MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, -@@ -367,9 +367,9 @@ +@@ -402,9 +402,9 @@ static struct key context_fcc_keys[] = {HELP_MENU, @@ -91,16 +108,7 @@ {MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, PREVC_MENU, NEXTC_MENU, -@@ -384,16 +384,16 @@ - static struct key folder_keys[] = - {HELP_MENU, - OTHER_MENU, -- {"<", NULL, {MC_EXIT,3,{' ','<',','}}, KS_NONE}, -- {">", "[View Fldr]", -+ {"M", NULL, {MC_EXIT,3,{' ','<',','}}, KS_NONE}, -+ {">", "[檢視檔案匣]", - {MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE}, - PREVF_MENU, +@@ -426,23 +426,23 @@ NEXTF_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, @@ -112,58 +120,35 @@ WHEREIS_MENU, HELP_MENU, -@@ -405,9 +405,9 @@ + OTHER_MENU, + QUIT_MENU, + MAIN_MENU, +- {"V", "[View Fldr]", {MC_OPENFLDR}, KS_NONE}, ++ {"V", "[檢視檔案匣]", {MC_OPENFLDR}, KS_NONE}, + GOTO_MENU, CIND_MENU, COMPOSE_MENU, - PRYNTTXT_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}}; INST_KEY_MENU(folder_km, folder_keys); #define KM_COL_KEY 2 #define KM_SEL_KEY 3 -@@ -419,9 +419,9 @@ +@@ -455,7 +455,7 @@ static struct key folder_sel_keys[] = {HELP_MENU, -- {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, -- {"<", "Collections", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE}, -- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE}, -+ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, -+ {"<", "總集", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE}, -+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE}, - PREVF_MENU, - NEXTF_MENU, - PREVPAGE_MENU, -@@ -435,9 +435,9 @@ - - static struct key folder_sub_sel_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}, - PREVF_MENU, - NEXTF_MENU, - PREVPAGE_MENU, -@@ -451,9 +451,9 @@ - - static struct key folder_fcc_keys[] = - {HELP_MENU, - {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, -- {"<", "Collections", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE}, -- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, + {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE}, -+ {"<", "總集", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE}, -+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, + NULL_MENU, + {NULL, NULL, {MC_CHOICE,3,{0,ctrl('M'),ctrl('J')}}, KS_NONE}, - PREVF_MENU, - NEXTF_MENU, -@@ -469,9 +469,9 @@ +@@ -474,14 +474,14 @@ static struct key folder_sub_keys[] = {HELP_MENU, @@ -176,7 +161,13 @@ PREVF_MENU, NEXTF_MENU, PREVPAGE_MENU, -@@ -488,8 +488,8 @@ + NEXTPAGE_MENU, +- {"L", "List Mode", {MC_LISTMODE, 1, {'l'}}, KS_NONE}, ++ {"L", "列表模式", {MC_LISTMODE, 1, {'l'}}, KS_NONE}, + NULL_MENU, + NULL_MENU, + WHEREIS_MENU}; +@@ -493,8 +493,8 @@ static struct key folder_post_keys[] = {HELP_MENU, NULL_MENU, @@ -187,7 +178,16 @@ PREVF_MENU, NEXTF_MENU, PREVPAGE_MENU, -@@ -610,12 +610,12 @@ +@@ -537,7 +537,7 @@ + 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"; +@@ -621,12 +621,12 @@ mailcap_free(); /* free resources we won't be using for a while */ memset(&css, 0, sizeof(CONT_SCR_S)); @@ -202,7 +202,51 @@ css.keymenu = &c_cfg_km; css.edit = 1; -@@ -904,7 +904,7 @@ +@@ -669,10 +669,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, +@@ -681,7 +681,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, +@@ -732,10 +732,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_sel_km; + + /* If we were provided a string, +@@ -744,7 +744,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, +@@ -921,7 +921,7 @@ /* leave (*new_dir)->ref == NULL */ } @@ -211,7 +255,7 @@ (*new_dir)->desc = cpystr(tmp_20k_buf); } -@@ -1003,12 +1003,12 @@ +@@ -1025,12 +1025,12 @@ CONT_SCR_S css; memset(&css, 0, sizeof(CONT_SCR_S)); @@ -226,7 +270,7 @@ css.keymenu = km; css.edit = edit_config; -@@ -1079,7 +1079,7 @@ +@@ -1102,7 +1102,7 @@ pbuf.browse_help = h_composer_browse; pbuf.attach_help = h_composer_ctrl_j; pbuf.composer_help = h_composer; @@ -235,7 +279,7 @@ pbuf.pine_anchor = set_titlebar(tmp, ps_global->mail_stream, ps_global->context_current, ps_global->cur_folder,ps_global->msgmap, -@@ -1322,10 +1322,10 @@ +@@ -1347,10 +1347,10 @@ else exists = (i & FEX_ISDIR); @@ -249,7 +293,7 @@ if(want_to(prompt, 'y', 0, NO_HELP, WT_NORM) == 'y'){ if(!exists && !mail_create(NULL, tmp)){ flush_status_messages(1); /* mail_create gripes */ -@@ -1357,7 +1357,7 @@ +@@ -1382,7 +1382,7 @@ char *rstr = NULL; void (*redraw)() = ps_global->redrawer; #define CCA_PROMPT \ @@ -258,277 +302,262 @@ ps_global->redrawer = redraw_pico; fix_windsize(ps_global); -@@ -1474,7 +1474,7 @@ - /*BUG: test writing with NNTP to misc.test via mark's code. reasonable err msg?*/ - if(NEWS_TEST(fs->context)) { - q_status_message(SM_ORDER | SM_DING, 3, 4, -- "Can't save messages to bulletin boards or news groups!"); -+ "無法將訊息存至電子佈告欄或新聞組群上!"); - return(0); - } - #endif -@@ -1489,7 +1489,7 @@ +@@ -1505,7 +1505,7 @@ FSTATE_S *fs; { - if(!strncmp(f->prefix, "SUB", 3)){ + if(f->subscribed){ - q_status_message1(SM_ORDER, 0, 4, "Already subscribed to \"%s\"", + q_status_message1(SM_ORDER, 0, 4, "已訂閱\至 \"%s\"", FLDR_NAME(f)); return(0); } -@@ -1502,7 +1502,7 @@ - fl_hdr_gen(ps) - struct pine *ps; - { -- set_titlebar("FOLDER LIST", ps->mail_stream, ps->context_current, -+ set_titlebar("信件匣列表", ps->mail_stream, ps->context_current, - ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0); - } - -@@ -1617,7 +1617,7 @@ - { - int ch, cmd, mangled_footer, mangled_header, - n, rc, cur_row, cur_col, km_size, was_dir = -1, -- km_popped = 0, listmode = 0, done = 0, save_sel = 0; -+ km_popped = 0, listmode = 0, done = 0, save_sel = 0, exit_to_main = 0; - unsigned short new_col; - FOLDER_S *cur_f = NULL; - STRLIST_S *sl = NULL; -@@ -1748,7 +1748,7 @@ - km.keys[KM_MAIN_KEY].bind.cmd = MC_NONE; - km.keys[KM_MAIN_KEY].bind.nch = 0; - -- km.keys[KM_COL_KEY].label = "Main Menu"; -+ km.keys[KM_COL_KEY].label = "主選單"; - km.keys[KM_COL_KEY].bind.cmd = MC_MAIN; - km.keys[KM_COL_KEY].bind.ch[0] = 'm'; - } -@@ -1768,14 +1768,14 @@ - if(listmode){ - clrbitn(SB_LIST_KEY, bitmap); - km.keys[SB_SEL_KEY].name = "X"; -- km.keys[SB_SEL_KEY].label = "[Set/Unset]"; -+ km.keys[SB_SEL_KEY].label = "[設定/取消設定]"; - km.keys[SB_SEL_KEY].bind.cmd = MC_SELCUR; - km.keys[SB_SEL_KEY].bind.ch[0] = 'x'; - } - else{ - clrbitn(SB_SUB_KEY, bitmap); - km.keys[SB_SEL_KEY].name = "S"; -- km.keys[SB_SEL_KEY].label = "[Subscribe]"; -+ km.keys[SB_SEL_KEY].label = "[訂閱\]"; - km.keys[SB_SEL_KEY].bind.cmd = MC_CHOICE; - km.keys[SB_SEL_KEY].bind.ch[0] = 's'; - } -@@ -1789,7 +1789,7 @@ - } - - if(cur_f && cur_f->isdir){ -- static struct key sel_key = {">", "[View Dir]", -+ static struct key sel_key = {">", "[檢視目錄]", - {MC_CHOICE,5, - {'s','>','.', - ctrl('M'),ctrl('J')}}, -@@ -1915,8 +1915,15 @@ - /*---------------------- Key left --------------*/ - case MC_CHARLEFT : - case MC_PREVITEM : -+ if (exit_to_main) -+ { -+ ps_global->next_screen = main_menu_screen; -+ done++; -+ } - if((n = folder_lister_prev(fs)) >= 0) - fs->folder_index = n; -+ else -+ exit_to_main = 1; - - break; - -@@ -1924,6 +1931,7 @@ - /*--------------------- Key right -------------------*/ - case MC_CHARRIGHT : - case MC_NEXTITEM : -+ exit_to_main = 0; - if(n = folder_lister_next(fs)) - fs->folder_index = n; - -@@ -1945,7 +1953,7 @@ - rc--; - - if(rc < 0){ -- q_status_message(SM_ORDER, 0, 1, "Already on first line."); -+ q_status_message(SM_ORDER, 0, 1, "已經到第一行了。"); - if(fs->top_row != 0){ /* make sure! */ - fs->top_row = 0; - fs->prev_index = -1; -@@ -1991,7 +1999,7 @@ - FOLDERS(fs->context))->d_line + 1; - - if(rc > fs->last_row){ -- q_status_message(SM_ORDER, 0, 1, "Already on last line."); -+ q_status_message(SM_ORDER, 0, 1, "已經到最後一行了。"); - break; - } +@@ -1549,7 +1549,7 @@ + } + else{ + q_status_message(SM_ORDER | SM_DING, 3, 3, +- "Formatting Error: Can't create space for list"); ++ "格式化錯誤:無法為列表建立空間"); + return(NULL); + } -@@ -2156,7 +2164,7 @@ - rc++; +@@ -1563,7 +1563,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; + +@@ -1875,7 +1875,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, c_list, -1, emptiness, +@@ -1885,7 +1885,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, c_list, -1, unexpanded, +@@ -2092,11 +2092,11 @@ + q_status_message(SM_ORDER, 0, 1, LISTMODE_GRIPE); } else -- q_status_message(SM_ORDER,0,1,"Already on first page."); -+ q_status_message(SM_ORDER,0,1,"已經到第一頁了。"); - - break; - -@@ -2169,7 +2177,7 @@ - if((rc = fs->top_row + fs->display_rows) > fs->last_row){ - if((int)folder_entry(fs->folder_index, - FOLDERS(fs->context))->d_line >= fs->last_row){ -- q_status_message(SM_ORDER,0,1,"Already on last page."); -+ q_status_message(SM_ORDER,0,1,"已經到最後一頁了。"); - break; - } - else -@@ -2210,7 +2218,7 @@ - } - else - q_status_message(SM_ORDER | SM_DING, 3, 3, -- "Sorry, no help text available"); -+ "很抱歉,文字說明無法取得"); +- 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; + break; -@@ -2219,7 +2227,7 @@ - case MC_CHOICE : - if(!folder_total(FOLDERS(fs->context))){ - q_status_message(SM_ORDER | SM_DING, 3, 3, -- "Empty folder collection. Nothing to select!"); -+ "空的資料匣總集。沒有東西可供選擇!"); - } - else if(folder_lister_select(cur_f, fs, listmode)){ - mangled_footer++; -@@ -2279,7 +2287,7 @@ - mangled_footer++; - } - else -- q_status_message(SM_ORDER, 0, 4, "Already in List Mode"); -+ q_status_message(SM_ORDER, 0, 4, "已經在列表模式了。"); +@@ -2122,7 +2122,7 @@ + sparms->text.handles->h.f.index); + else + q_status_message(SM_ORDER, 0, 4, +- "No Folders! Nothing to View"); ++ "沒有資料匣!沒有可供檢視的項目"); - break; + break; -@@ -2415,8 +2423,8 @@ - case MC_DELETE : - if(!ALL_FOUND(fs->context) || (fs->context->use & CNTXT_PSEUDO)){ - q_status_message1(SM_ORDER | SM_DING, 0, 3, -- "No folder selected to delete. %s list.", -- ALL_FOUND(fs->context) ? "Empty" : "Expand"); -+ "尚未選擇供刪除的資料匣。%s列表。", -+ ALL_FOUND(fs->context) ? "空" : "展開"); - break; - } +@@ -2206,7 +2206,7 @@ + } + else + q_status_message(SM_ORDER | SM_DING, 0, 4, +- "Empty folder collection. No folder to rename!"); ++ "空的資料匣總集。沒有可供更名的資料匣!"); + + break; + +@@ -2216,7 +2216,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 if(delete_folder(sparms->text.handles->h.f.context, + sparms->text.handles->h.f.index)){ +@@ -2336,7 +2336,7 @@ + } + else + q_status_message(SM_ORDER | SM_DING, 0, 4, +- "Empty folder collection. No folder to select!"); ++ "空的資料匣總集。沒有可供選擇的資料匣!"); -@@ -2494,13 +2502,13 @@ - if(fs->zoomed = !fs->zoomed){ /* clear all the prefixes */ - (void) folder_lister_nearest_selected(fs); - q_status_message1(SM_ORDER, 0, 3, -- "In Zoomed list of %s folders. Use \"Z\" to restore regular list", -+ "在 %s 個資料匣縮放的列表中。使用 \"Z\" 來回復正常列表", - int2string(n)); + break; - } - else{ +@@ -2352,11 +2352,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"); + "資料匣列表縮放模式目前為關閉狀態"); } - - create_folder_display(fs, ps->ttyo->screen_cols); -@@ -2508,7 +2516,7 @@ + else{ + q_status_message1(SM_ORDER, 0, 3, +- "In Zoomed list of %s folders. Use \"Z\" to restore regular list", ++ "在 %s 個資料匣縮放的列表中。使用 \"Z\" 來回復正常列表", + int2string(n)); + sparms->text.handles->h.f.context->use |= CNTXT_ZOOM; + } +@@ -2376,10 +2376,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; - break; -@@ -2518,16 +2526,16 @@ - case MC_WHEREIS : - switch(search_folders(fs, -FOOTER_ROWS(ps))){ - case -1 : -- cmd_cancelled("Folder name search"); -+ cmd_cancelled("搜尋檔案匣名稱"); - break; - - case 0 : -- q_status_message(SM_ORDER | SM_DING, 0, 2, "Word not found"); -+ q_status_message(SM_ORDER | SM_DING, 0, 2, "找不到該字"); - break; - - case 2 : - q_status_message(SM_ORDER, 0, 2, -- "Search wrapped to beginning"); -+ "從頭搜尋"); - break; - } +@@ -2469,7 +2469,7 @@ + empty++; -@@ -2594,8 +2602,8 @@ - && ALL_FOUND(fs->context)) - return(fs->folder_index + 1); + if(empty) +- q_status_message(SM_ORDER | SM_DING, 3, 3, "Empty folder list!"); ++ q_status_message(SM_ORDER | SM_DING, 3, 3, "空的資料匣列表!"); -- q_status_message1(SM_ORDER, 0, 1, "Already on last %sfolder", -- fs->zoomed ? "Zoomed " : ""); -+ q_status_message1(SM_ORDER, 0, 1, "已經在最後一個%s資料匣了", -+ fs->zoomed ? "縮放後的" : ""); - return(0); + return(rv); } - -@@ -2616,8 +2624,8 @@ - else if(fs->folder_index > 0 && ALL_FOUND(fs->context)) - return(fs->folder_index - 1); - -- q_status_message1(SM_ORDER, 0, 1, "Already on first %sfolder", -- fs->zoomed ? "Zoomed " : ""); -+ q_status_message1(SM_ORDER, 0, 1, "已經在第一個%s資料匣了", -+ fs->zoomed ? "縮放後的" : ""); - return(-1); - } - -@@ -2632,7 +2640,7 @@ - if(listmode){ - if(NEWS_TEST(fs->context) && !strncmp(f->prefix, "SUB", 3)){ - q_status_message1(SM_ORDER, 0, 3, -- "Already subscribed to \"%s\"", -+ "已訂閱\至 \"%s\"", - FLDR_NAME(f)); +@@ -2510,14 +2510,14 @@ + ? sparms->text.handles->h.f.context->dir->prev + : FPROC(sparms)->fs->context->dir->prev){ + sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'e'; +- 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 + || FPROC(sparms)->fs->context->prev) + && !FPROC(sparms)->fs->combined_view){ + sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'e'; +- 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{ +@@ -2529,7 +2529,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'; + } +@@ -2545,7 +2545,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')); +@@ -2555,7 +2555,7 @@ + setbitn(KM_ALTVIEW_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); +@@ -2563,7 +2563,7 @@ + } } else{ -@@ -2642,7 +2650,7 @@ +- 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); +@@ -2573,7 +2573,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); +@@ -2616,7 +2623,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.nch = 2; + sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<'; +@@ -2627,7 +2634,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.nch = 2; + sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<'; +@@ -2639,7 +2646,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'; +@@ -2651,7 +2658,7 @@ + FOLDERS(sparms->text.handles->h.f.context))) + && fp->isdir){ + sparms->keys.menu->keys[FC_SEL_KEY].name = ">"; +- sparms->keys.menu->keys[FC_SEL_KEY].label = "[View Dir]"; ++ sparms->keys.menu->keys[FC_SEL_KEY].label = "[檢視目錄]"; + menu_clear_binding(sparms->keys.menu, 's'); + menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE); + menu_add_binding(sparms->keys.menu, '>', MC_CHOICE); +@@ -2659,7 +2666,7 @@ } else{ - if(f->isdir){ -- q_status_message(SM_ORDER, 0, 3, "Can't select directories"); -+ q_status_message(SM_ORDER, 0, 3, "無法選擇目錄"); - } - else - folder_select_toggle(fs, f); -@@ -2699,13 +2707,13 @@ - extern char *sel_pmt2; - - if((f = folder_entry(fs->folder_index, FOLDERS(fs->context)))->isdir){ -- q_status_message(SM_ORDER | SM_DING, 0, 3, "Can't Select directories"); -+ q_status_message(SM_ORDER | SM_DING, 0, 3, "無法選擇目錄"); - return(0); + 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_clear_binding(sparms->keys.menu, 'v'); + menu_clear_binding(sparms->keys.menu, '>'); + menu_clear_binding(sparms->keys.menu, '.'); +@@ -2695,14 +2702,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'; } - - sel_opts = self_opts2; - if(old_tot = selected_folders(fs)){ -- sel_opts1[1].label = "unselect Cur" + (f->selected ? 0 : 2); -+ sel_opts1[1].label = "取消目前選擇" + (f->selected ? 0 : 2); - sel_opts += 2; /* disable extra options */ - switch(q = radio_buttons(SEL_ALTER_PMT, -FOOTER_ROWS(ps_global), - sel_opts1, 'c', 'x', help, RB_NORM)){ -@@ -2730,7 +2738,7 @@ + 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'; + } +@@ -2778,7 +2785,7 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -537,7 +566,7 @@ return(0); } } -@@ -2744,7 +2752,7 @@ +@@ -2792,7 +2799,7 @@ */ switch(q){ case 'x': /* cancel */ @@ -546,9 +575,9 @@ return(0); case 'c' : /* toggle current's selected state */ -@@ -2766,10 +2774,10 @@ - create_folder_display(fs, ps_global->ttyo->screen_cols); - } +@@ -2804,10 +2811,10 @@ + for(total = i = 0; i < n; i++) + folder_entry(i, FOLDERS(context))->selected = old_tot == 0; - q_status_message4(SM_ORDER, 0, 2, "%s%s folder%s %sselected", - old_tot ? "" : "All ", @@ -560,7 +589,7 @@ return(1); case 't' : /* Text */ -@@ -2786,7 +2794,7 @@ +@@ -2824,7 +2831,7 @@ default : q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -569,9 +598,9 @@ return(0); } -@@ -2815,35 +2823,30 @@ +@@ -2852,34 +2859,30 @@ - if(!(diff = (total = selected_folders(fs)) - old_tot)){ + if(!(diff = (total = selected_folders(context)) - old_tot)){ if(narrow) - q_status_message4(SM_ORDER, 0, 2, - "%s. %s folder%s remain%s selected.", @@ -581,54 +610,54 @@ - (old_tot == 1L) ? "s" : ""); + q_status_message2(SM_ORDER, 0, 2, + "%s。 仍有 %s 個資料匣被選擇。", -+ j ? "沒有導致改變" -+ : "交點中沒有信件", comatose(old_tot)); ++ 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 ? "額外的 " : ""); ++ 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 %s folder%s!", -- comatose(diff), plural(diff)); -+ q_status_message1(SM_ORDER, 0, 2, "選擇符合的 %s 個資料匣!", -+ comatose(diff)); - - if(F_OFF(F_SELECTED_SHOWN_BOLD, ps_global)){ - folder_prefixes(fs, " "); -@@ -3031,9 +3034,9 @@ - - fs->prev_index = -1; /* redraw display */ + 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 %s folder%s.", +- comatose(diff), plural(diff)); ++ q_status_message1(SM_ORDER, 0, 2, "選擇符合的 %s 個資料匣!", ++ comatose(diff)); + return(1); + } +@@ -2995,9 +2998,9 @@ + fp->prev = context->dir; + fp->status |= CNTXT_SUBDIR; + context->dir = fp; - q_status_message2(SM_ORDER, 0, 3, "Now in %sdirectory: %s", + q_status_message2(SM_ORDER, 0, 3, "目前在 %s目錄中:%s", - folder_total(FOLDERS(fs->context)) + folder_total(FOLDERS(context)) - ? "" : "EMPTY ", fp->ref); + ? "" : "空的 ", fp->ref); rv++; } else -@@ -3052,7 +3055,7 @@ +@@ -3016,7 +3019,7 @@ char *p; /* Provide context in new collection header */ @@ -637,14 +666,14 @@ ((p = strstr(cntxt->context, "%s")) && !*(p+2) && !strncmp(fdp->ref, cntxt->context, p - cntxt->context)) ? fdp->ref + (p - cntxt->context) : fdp->ref); -@@ -3097,12 +3100,12 @@ - fs->prev_index = -1; /* redraw display */ +@@ -3062,12 +3065,12 @@ + context->dir = fp; if(fp->status & CNTXT_SUBDIR) - q_status_message1(SM_ORDER, 0, 3, "Now in directory: %s", + q_status_message1(SM_ORDER, 0, 3, "目前所在目錄:%s", strsquish(tmp_20k_buf + 500, fp->ref, - fs->display_cols - 22)); + ps_global->ttyo->screen_cols - 22)); else q_status_message(SM_ORDER, 0, 3, - "Returned to collection's top directory"); @@ -652,8 +681,8 @@ rv++; } -@@ -3673,12 +3676,12 @@ - if(fs->context->use & CNTXT_INCMNG){ +@@ -3258,12 +3261,12 @@ + if(context->use & CNTXT_INCMNG){ char inbox_host[MAXPATH], *beg, *end = NULL; ESCKEY_S *special_key; - static ESCKEY_S host_key[] = {{ctrl('X'),12,"^X","Use Inbox Host"}, @@ -667,7 +696,7 @@ return(FALSE); } -@@ -3700,7 +3703,7 @@ +@@ -3285,7 +3288,7 @@ else special_key = NULL; @@ -676,7 +705,7 @@ help = NO_HELP; while(1){ int flags = OE_APPEND_CURRENT; -@@ -3718,7 +3721,7 @@ +@@ -3303,7 +3306,7 @@ } else if(rc == 1){ q_status_message(SM_ORDER,0,2, @@ -685,7 +714,7 @@ return(FALSE); } else if(rc == 0) -@@ -3728,7 +3731,7 @@ +@@ -3313,7 +3316,7 @@ if(offset = strlen(add_folder)){ /* must be host for incoming */ int i; @@ -694,7 +723,7 @@ for(i = offset;i >= 0; i--) add_folder[i+1] = add_folder[i]; -@@ -3737,7 +3740,7 @@ +@@ -3322,7 +3325,7 @@ add_folder[++offset] = '\0'; /* +2, total */ } else @@ -703,7 +732,7 @@ help = NO_HELP; while(1){ -@@ -3745,14 +3748,14 @@ +@@ -3330,14 +3333,14 @@ p = NULL; if(isdir){ @@ -722,34 +751,29 @@ } flags = OE_APPEND_CURRENT; -@@ -3766,7 +3769,7 @@ +@@ -3351,10 +3354,10 @@ if(!ps_global->show_dot_names && add_folder[offset] == '.'){ if(cnt++ <= 0) - q_status_message(SM_ORDER,3,3, -- "Folder name can't begin with dot"); -+ "資料匣不能以點 \".\" 為名稱開頭"); - else{ - NAMEVAL_S *feat; - int i; -@@ -3776,7 +3779,7 @@ - ;/* do nothing */ - - q_status_message1(SM_ORDER,3,3, + q_status_message(SM_ORDER,3,3, +- "Folder name can't begin with dot"); ++ "資料匣不能以點 \".\" 為名稱開頭"); + else + q_status_message1(SM_ORDER,3,3, - "Config feature \"%s\" enables names beginning with dot", + "設定檔中 \"%s\" 的功\能可使資料匣以點 \".\" 為名稱開頭", - feat && feat->name ? feat->name : ""); - } + feature_list_name(F_ENABLE_DOT_FOLDERS)); -@@ -3796,7 +3799,7 @@ + display_message(NO_OP_COMMAND); +@@ -3373,7 +3376,7 @@ } - else if(*p == fs->context->dir->delim){ + 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; } -@@ -3818,7 +3821,7 @@ +@@ -3395,7 +3398,7 @@ : NO_HELP; } else if(rc == 1 || add_folder[0] == '\0') { @@ -758,16 +782,16 @@ return(FALSE); } } -@@ -3837,7 +3840,7 @@ +@@ -3414,7 +3417,7 @@ help = NO_HELP; - if(fs->context->use & CNTXT_INCMNG){ + if(context->use & CNTXT_INCMNG){ - sprintf(tmp, "Nickname for folder \"%s\" : ", &add_folder[offset]); + sprintf(tmp, "資料匣\"%s\" 的暱稱:", &add_folder[offset]); while(1){ int flags = OE_APPEND_CURRENT; -@@ -3858,7 +3861,7 @@ +@@ -3435,7 +3438,7 @@ } else if(rc == 1 || (rc != 3 && !*nickname)){ q_status_message(SM_ORDER,0,2, @@ -776,8 +800,8 @@ return(FALSE); } } -@@ -3873,7 +3876,7 @@ - f = folder_entry(offset, FOLDERS(fs->context)); +@@ -3450,7 +3453,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 \"%s\" already exists", @@ -785,7 +809,7 @@ nickname[0] ? nickname : add_folder); return(FALSE); } -@@ -3927,7 +3930,7 @@ +@@ -3503,18 +3506,18 @@ if(nickname[0]) strcpy(add_folder, nickname); /* known by new name */ @@ -794,16 +818,11 @@ return_val = add_folder; } else if(context_isambig(add_folder)){ -@@ -3943,15 +3946,15 @@ - */ - refresh_folder_list(fs, TRUE); - -- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" created", -- isdir ? "Directory" : "Folder", add_folder); -+ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已建立", -+ isdir ? "目錄" : "資料匣", add_folder); - } - + free_folder_list(context); +- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" created", +- isdir ? "Directory" : "Folder", add_folder); ++ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已建立", ++ isdir ? "目錄" : "資料匣", add_folder); return_val = add_folder; } else @@ -813,7 +832,7 @@ add_folder); return(return_val != NULL); -@@ -3990,13 +3993,13 @@ +@@ -3553,13 +3556,13 @@ subscribe_keys[i = 0].ch = ctrl('T'); subscribe_keys[i].rval = 12; subscribe_keys[i].name = "^T"; @@ -829,7 +848,7 @@ } subscribe_keys[i].ch = -1; -@@ -4057,7 +4060,7 @@ +@@ -3620,7 +3623,7 @@ } else{ q_status_message(SM_ORDER, 0, 2, @@ -838,7 +857,7 @@ continue; } -@@ -4110,10 +4113,10 @@ +@@ -3673,10 +3676,10 @@ else{ if(rc == 12) q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -851,16 +870,16 @@ folder); free_folder_list(&subscribe_cntxt); -@@ -4162,7 +4165,7 @@ - +@@ -3721,7 +3724,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{ if(folders){ /*------ Actually do the subscription -----*/ -@@ -4184,7 +4187,7 @@ +@@ -3743,7 +3746,7 @@ */ q_status_message1(errors ?SM_INFO : SM_ORDER, errors ? 0 : 3, 3, @@ -869,7 +888,7 @@ (char *) flp->name); errors++; } -@@ -4208,13 +4211,13 @@ +@@ -3767,13 +3770,13 @@ if(n == 0) q_status_message(SM_ORDER | SM_DING, 3, 5, @@ -886,7 +905,7 @@ errors ? comatose((long)errors) : ""); free_strlist(&folders); -@@ -4223,7 +4226,7 @@ +@@ -3782,7 +3785,7 @@ (void) context_apply(tmp_20k_buf, &subscribe_cntxt, folder); if(mail_subscribe(NULL, tmp_20k_buf) == 0L){ q_status_message1(SM_ORDER | SM_DING, 3, 3, @@ -895,7 +914,7 @@ } else if(ALL_FOUND(cntxt)){ /*---- Update the screen display data structures -----*/ -@@ -4237,7 +4240,7 @@ +@@ -3796,7 +3799,7 @@ } if(folder[0]) @@ -904,21 +923,21 @@ } free_fdir(&subscribe_cntxt.dir, 1); -@@ -4277,19 +4280,19 @@ +@@ -3837,19 +3840,19 @@ - if(NEWS_TEST(fs->context)){ + if(NEWS_TEST(context)){ q_status_message(SM_ORDER | SM_DING, 3, 3, - "Can't rename bulletin boards or news groups!"); + "無法更改電子佈告欄或新聞組群的名稱!"); return(0); } - else if(!folder_total(FOLDERS(fs->context))){ + 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(fs->folder_index, FOLDERS(fs->context))) + else if((new_f = folder_entry(index, FOLDERS(context))) && (!strucmp(FLDR_NAME(new_f), ps_global->inbox_name) || new_f->parent)) { q_status_message1(SM_ORDER | SM_DING, 3, 4, @@ -927,13 +946,13 @@ new_f->parent ? new_f->nickname : ps_global->inbox_name); -@@ -4305,11 +4308,11 @@ +@@ -3865,11 +3868,11 @@ ren_cur = strcmp(folder, ps_global->cur_folder) == 0; - sprintf(prompt, "Rename %s to : ", + sprintf(prompt, "將 %s 更名為:", - (fs->context->use & CNTXT_INCMNG) + (context->use & CNTXT_INCMNG) - ? "nickname" + ? "暱稱" : (isdir = new_f->isdir) @@ -942,27 +961,22 @@ help = NO_HELP; strcpy(new_name, folder); while(1) { -@@ -4330,7 +4333,7 @@ +@@ -3890,10 +3893,10 @@ if(!ps_global->show_dot_names && *new_name == '.'){ if(cnt++ <= 0) q_status_message(SM_ORDER,3,3, - "Folder name can't begin with dot"); + "資料匣不能以點 \".\" 為名稱開頭"); - else{ - NAMEVAL_S *feat; - int i; -@@ -4340,7 +4343,7 @@ - ;/* do nothing */ - - q_status_message1(SM_ORDER,3,3, + else + q_status_message1(SM_ORDER,3,3, - "Config feature \"%s\" enables names beginning with dot", + "設定檔中 \"%s\" 的功\能可使資料匣以點 \".\" 為名稱開頭", - feat && feat->name ? feat->name : ""); - } + feature_list_name(F_ENABLE_DOT_FOLDERS)); -@@ -4350,13 +4353,13 @@ + display_message(NO_OP_COMMAND); +@@ -3902,13 +3905,13 @@ - if(folder_index(new_name, fs->context, FI_ANY) >= 0){ + if(folder_index(new_name, context, FI_ANY) >= 0){ q_status_message1(SM_ORDER, 3, 3, - "Folder \"%s\" already exists", + "資料匣 \"%s\" 已存在", @@ -976,25 +990,25 @@ ps_global->inbox_name); display_message(NO_OP_COMMAND); continue; -@@ -4379,7 +4382,7 @@ +@@ -3931,7 +3934,7 @@ if(rc == 1 - || !(*new_name || (fs->context->use & CNTXT_INCMNG)) + || !(*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); } -@@ -4461,7 +4464,7 @@ +@@ -4012,7 +4015,7 @@ /* renaming sent-mail or saved-messages */ - if(context_create(fs->context, NULL, folder)){ + if(context_create(context, NULL, folder)){ q_status_message3(SM_ORDER,0,3, - "Folder \"%s\" renamed to \"%s\". New \"%s\" created", + "資料匣 \"%s\" 名稱改為 \"%s\"。建立新的 \"%s\"", folder, new_name, pretty_fn( (strcmp(ps_global->VAR_DEFAULT_SAVE_FOLDER, -@@ -4472,7 +4475,7 @@ +@@ -4023,7 +4026,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 4, @@ -1002,8 +1016,8 @@ + "建立新的資料匣 \"%s\" 時發生錯誤", folder); dprint(2, (debugfile, "Error creating \"%s\" in %s context\n", - folder, fs->context->context)); -@@ -4480,7 +4483,7 @@ + folder, context->context)); +@@ -4031,7 +4034,7 @@ } else q_status_message2(SM_ORDER, 0, 3, @@ -1011,24 +1025,18 @@ + "資料匣 \"%s\" 名稱改為 \"%s\"", pretty_fn(folder), pretty_fn(new_name)); - /* Rebuild folder list */ -@@ -4530,12 +4533,12 @@ - - if(!folder_total(FOLDERS(fs->context))){ - q_status_message(SM_ORDER | SM_DING, 0, 4, -- "Empty folder collection. No folder to delete!"); -+ "空的資料匣褻陛C沒有東西可供刪除!"); - return(0); - } + free_folder_list(context); +@@ -4068,7 +4071,7 @@ + int ret, close_opened = 0, blast_folder = 1; - if(NEWS_TEST(fs->context)){ + if(NEWS_TEST(context)){ - static char fmt[] = "Really unsubscribe from \"%.*s\""; + static char fmt[] = "確定自 \"%.*s\" 中解除訂閱\嗎"; - folder = folder_entry(fs->folder_index, FOLDERS(fs->context))->name; + folder = folder_entry(index, FOLDERS(context))->name; /* 4 is strlen("%.*s") */ -@@ -4557,7 +4560,7 @@ - (void) context_apply(tmp_20k_buf, fs->context, folder); +@@ -4090,7 +4093,7 @@ + (void) context_apply(tmp_20k_buf, context, folder); if(!mail_unsubscribe(NULL, tmp_20k_buf)){ q_status_message1(SM_ORDER | SM_DING, 3, 3, - "Error unsubscribing from \"%s\"", folder); @@ -1036,9 +1044,9 @@ return(0); } -@@ -4579,12 +4582,12 @@ +@@ -4107,12 +4110,12 @@ - if(ps_global->readonly_pinerc && (fs->context->use & CNTXT_INCMNG)){ + if(ps_global->readonly_pinerc && (context->use & CNTXT_INCMNG)){ q_status_message(SM_ORDER,3,5, - "Deletion cancelled: config file not editable"); + "取消刪除:無法編輯設定檔"); @@ -1050,8 +1058,8 @@ + "無法刪除特殊資料匣 \"%s\"。", ps_global->inbox_name); return(0); } - else if(fs->context == ps_global->context_current -@@ -4599,7 +4602,7 @@ + else if(context == ps_global->context_current +@@ -4127,7 +4130,7 @@ if(ret){ q_status_message1(SM_ORDER | SM_DING, 3, 4, @@ -1060,9 +1068,9 @@ folder); return(0); } -@@ -4610,19 +4613,19 @@ +@@ -4138,19 +4141,19 @@ */ - if(folder_index(folder, fs->context, FI_FOLDER) >= 0 + if(folder_index(folder, context, FI_FOLDER) >= 0 && (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"); @@ -1072,7 +1080,7 @@ } } - if(fs->context->use & CNTXT_INCMNG){ + if(context->use & CNTXT_INCMNG){ static ESCKEY_S delf_opts[] = { - {'n', 'n', "N", "Nickname only"}, - {'b', 'b', "B", "Both Folder and Nickname"}, @@ -1085,7 +1093,7 @@ switch(radio_buttons(DELF_PROMPT, -FOOTER_ROWS(ps_global), delf_opts,'n','x',NO_HELP,RB_NORM)){ -@@ -4631,7 +4634,7 @@ +@@ -4159,7 +4162,7 @@ break; case 'x' : @@ -1094,7 +1102,7 @@ return(0); default : -@@ -4639,13 +4642,13 @@ +@@ -4167,13 +4170,13 @@ } } else{ @@ -1113,7 +1121,7 @@ return(0); } } -@@ -4688,13 +4691,13 @@ +@@ -4216,13 +4219,13 @@ /* * BUG: what if sent-mail or saved-messages???? */ @@ -1123,14 +1131,14 @@ } } -- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" deleted!", +- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" deleted.", - blast_folder ? "Folder" : "Nickname", folder); -+ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已被刪除!", ++ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已刪除。", + blast_folder ? "資料匣" : "暱稱", folder); - if(fs->context->use & CNTXT_INCMNG){ -@@ -4839,7 +4842,7 @@ + if(context->use & CNTXT_INCMNG){ +@@ -4299,7 +4302,7 @@ int flags; pat[0] = '\0'; @@ -1139,7 +1147,7 @@ while(1){ flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP; -@@ -4855,7 +4858,7 @@ +@@ -4317,7 +4320,7 @@ return(1); case 1 : @@ -1148,7 +1156,7 @@ default : return(0); -@@ -4931,7 +4934,7 @@ +@@ -4394,7 +4397,7 @@ return(1); } @@ -1157,7 +1165,7 @@ return(0); } -@@ -4964,7 +4967,7 @@ +@@ -4427,7 +4430,7 @@ if(!strucmp(folder = f->name, ps_global->inbox_name)) return(FEX_ISFILE); @@ -1166,7 +1174,7 @@ we_cancel = busy_alarm(1, tmp, NULL, 0); mm_list_info = &ldata; /* tie down global reference */ -@@ -5107,7 +5110,7 @@ +@@ -4571,7 +4574,7 @@ return(1); } @@ -1175,7 +1183,7 @@ return(0); } -@@ -5129,7 +5132,7 @@ +@@ -4593,7 +4596,7 @@ while(1){ flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP; sprintf(number, "%ld", *count); @@ -1184,7 +1192,7 @@ r = optionally_enter(number, -FOOTER_ROWS(ps_global), 0, 31, prompt, sel_num_opt, NO_HELP, &flags); switch (r){ -@@ -5138,7 +5141,7 @@ +@@ -4602,7 +4605,7 @@ break; else if((*count = atol(number)) < 0L) q_status_message(SM_ORDER, 3, 3, @@ -1193,91 +1201,16 @@ else return(1); /* success */ -@@ -5299,7 +5302,7 @@ +@@ -4763,7 +4766,7 @@ for(; i >= 0; i--) - folder_entry(i, FOLDERS(fs->context))->scanned = 0; + folder_entry(i, FOLDERS(context))->scanned = 0; - cmd_cancelled("Select"); + cmd_cancelled("選擇"); rv = 0; break; } -@@ -5344,14 +5347,14 @@ - int rc, t_index, done = 0; - static char search_string[MAX_SEARCH+1]; - static ESCKEY_S search_keys[] = {{0, 0, NULL, NULL}, -- {ctrl('Y'), 10, "^Y","First Fldr"}, -- {ctrl('V'), 11, "^V","Last Fldr"}, -+ {ctrl('Y'), 10, "^Y","第一個資料匣"}, -+ {ctrl('V'), 11, "^V","最後一個資料匣"}, - {-1, 0, NULL, NULL} }; - - nsearch_string[0] = '\0'; - if(!folder_total(FOLDERS(fd->context))){ - q_status_message(SM_ORDER | SM_DING, 0, 4, -- "Empty folder collection. No folders to search!"); -+ "空的資料匣總集。沒有東西可供搜尋!"); - return(0); - } - else{ -@@ -5359,7 +5362,7 @@ - search_keys[0].ch = ctrl('X'); - search_keys[0].rval = 9; - search_keys[0].name = "^X"; -- search_keys[0].label = "List Matches"; -+ search_keys[0].label = "列出符合者"; - } - else{ - search_keys[0].ch = 0; -@@ -5370,7 +5373,7 @@ - } - - t_index = fd->folder_index; -- sprintf(prompt, "Folder name to search for %s%s%s: ", -+ sprintf(prompt, "欲搜尋的資料匣名稱 %s%s%s:", - (*search_string == '\0') ? "" : "[", - search_string, - (*search_string == '\0') ? "" : "] "); -@@ -5381,7 +5384,7 @@ - switch(optionally_enter(nsearch_string, ask_line, 0, MAX_SEARCH, - prompt, search_keys, help, &flags)){ - case -1 : -- q_status_message(SM_ORDER | SM_DING, 3, 3, "Error reading word"); -+ q_status_message(SM_ORDER | SM_DING, 3, 3, "讀取字元時發生錯誤"); - return(0); - - case 0 : /*----- Search away ------*/ -@@ -5438,9 +5441,9 @@ - } - - if(rc){ -- q_status_message2(SM_ORDER, 0, 3, -- "Searched matched %s folder%s", -- int2string(count), plural(count)); -+ q_status_message1(SM_ORDER, 0, 3, -+ "共有 %s 個資料匣符合搜尋條件", -+ int2string(count)); - fd->prev_index = -1; /* repaint! */ - } - -@@ -5454,14 +5457,14 @@ - while((t_index = folder_lister_prev(fd)) >= 0) - fd->folder_index = t_index; - -- q_status_message(SM_ORDER, 0, 3, "Searched to First Folder."); -+ q_status_message(SM_ORDER, 0, 3, "搜尋至第一個資料匣。"); - return(3); - - case 11 : - while((t_index = folder_lister_next(fd))) - fd->folder_index = t_index; - -- q_status_message(SM_ORDER, 0, 3, "Searched to Last Folder."); -+ q_status_message(SM_ORDER, 0, 3, "搜尋至最後一個資料匣。"); - return(3); - - default : -@@ -6500,7 +6503,7 @@ +@@ -5712,7 +5715,7 @@ if(p = context_digest(c_string, dcontext, host, rcontext, view)){ q_status_message2(SM_ORDER | SM_DING, 3, 4, @@ -1286,7 +1219,7 @@ fs_give((void **) &c_string); if(nickname) fs_give((void **)&nickname); -@@ -6541,14 +6544,14 @@ +@@ -5753,14 +5756,14 @@ /* fix up label */ if(NEWS_TEST(c)){ @@ -1305,7 +1238,7 @@ (*host) ? host : "", p ? p - rcontext : 0, rcontext, (p && (p - rcontext) > 0) ? "" : "home directory"); } -@@ -7745,7 +7748,7 @@ +@@ -6986,7 +6989,7 @@ if(error && num_in_error){ cnt_errs = num_in_error; memset((void *)ng_error, 0, (size_t)90); diff --git a/chinese/pine4/files/patch-ay b/chinese/pine4/files/patch-ay index 05b94047d2b9..9471f165fa6d 100644 --- a/chinese/pine4/files/patch-ay +++ b/chinese/pine4/files/patch-ay @@ -1,11 +1,7 @@ ---- pine/help.c.orig Wed Jul 1 06:22:26 1998 -+++ pine/help.c Tue Aug 4 12:42:16 1998 -@@ -50,15 +50,15 @@ - - static struct key help_keys[] = - {MAIN_MENU, -- {"E","Exit Help",{MC_EXIT,1,{'e'}}, KS_EXITMODE}, -+ {"E","離開",{MC_EXIT,1,{'e'}}, KS_EXITMODE}, +--- pine/help.c.orig Thu Jan 7 03:50:55 1999 ++++ pine/help.c Tue Feb 23 15:27:01 1999 +@@ -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}, @@ -29,7 +25,7 @@ NULL_MENU, NULL_MENU, NULL_MENU, -@@ -269,7 +269,7 @@ +@@ -262,7 +262,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = CharStar; @@ -38,7 +34,7 @@ sargs.text.handles = handles; if(!(sargs.bar.title = title)){ if(!struncmp(shown_text[0], "<html>", 6)){ -@@ -297,7 +297,7 @@ +@@ -290,7 +290,7 @@ } if(!sargs.bar.title) @@ -47,7 +43,7 @@ } sargs.bar.style = TextPercent; -@@ -313,13 +313,13 @@ +@@ -307,18 +307,18 @@ setbitmap(sargs.keys.bitmap); if(flags & HLPD_FROMHELP){ km.keys[HLP_EXIT_KEY].name = "P"; @@ -55,6 +51,21 @@ + 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"; @@ -62,8 +73,14 @@ + km.keys[HLP_EXIT_KEY].label = "離開"; km.keys[HLP_EXIT_KEY].bind.cmd = MC_EXIT; km.keys[HLP_EXIT_KEY].bind.ch[0] = 'e'; - clrbitn(HLP_SUBEXIT_KEY, sargs.keys.bitmap); -@@ -478,7 +478,7 @@ + + 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] = '?'; + } +@@ -492,7 +492,7 @@ } sparms->keys.menu->keys[HLP_VIEW_HANDLE].name = "V"; @@ -72,7 +89,16 @@ } } -@@ -559,7 +559,7 @@ +@@ -543,7 +543,7 @@ + print_text(NEWLINE); + + if(error = gf_pipe(helper_getc, print_char)) +- q_status_message1(SM_ORDER | SM_DING, 3, 3, "Printing Error: %s", error); ++ q_status_message1(SM_ORDER | SM_DING, 3, 3, "列印錯誤:%s", error); + + print_char(ctrl('L')); /* new page. */ + } +@@ -573,7 +573,7 @@ #endif if(ps_global->intr_pending){ q_status_message(SM_ORDER, 3, 3, @@ -81,7 +107,7 @@ break; } -@@ -948,7 +948,7 @@ +@@ -962,7 +962,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = tmp_text; sargs.text.src = CharStar; @@ -90,7 +116,7 @@ sargs.bar.title = title; sargs.start.on = LastPage; -@@ -1304,7 +1304,7 @@ +@@ -1321,7 +1321,7 @@ #endif } else if(ch == 'x'){ @@ -99,3 +125,41 @@ return(-1); } } +@@ -1448,13 +1448,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; +@@ -1479,18 +1479,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; diff --git a/chinese/pine4/files/patch-ba b/chinese/pine4/files/patch-ba index cc4fe8ad069a..85e358656524 100644 --- a/chinese/pine4/files/patch-ba +++ b/chinese/pine4/files/patch-ba @@ -1,6 +1,6 @@ ---- pine/mailcmd.c.orig Tue Sep 15 03:01:15 1998 -+++ pine/mailcmd.c Tue Sep 22 19:13:41 1998 -@@ -108,39 +108,39 @@ +--- pine/mailcmd.c.orig Thu Feb 4 10:16:45 1999 ++++ pine/mailcmd.c Wed Feb 24 21:29:19 1999 +@@ -109,39 +109,39 @@ /* * List of Select options used by apply_* functions... */ @@ -61,7 +61,7 @@ { -1, 0, NULL, NULL}, { -1, 0, NULL, NULL}, { -1, 0, NULL, NULL}, -@@ -150,24 +150,24 @@ +@@ -151,24 +151,24 @@ static char *sel_flag = @@ -96,7 +96,7 @@ {ctrl('W'), 14, "^W", "Toggle When"}, {KEY_UP, 12, "", ""}, {KEY_DOWN, 13, "", ""}, -@@ -177,18 +177,18 @@ +@@ -178,18 +178,18 @@ static char *sel_text = #ifdef RECIPIENT @@ -123,7 +123,7 @@ #endif /* RECIPIENT */ {-1, 0, NULL, NULL} }; -@@ -242,7 +242,7 @@ +@@ -243,7 +243,7 @@ case MC_HELP : if(state->nr_mode) { q_status_message(SM_ORDER, 0, 3, @@ -132,7 +132,7 @@ break; } -@@ -271,7 +271,7 @@ +@@ -272,7 +272,7 @@ /*------- View message text --------*/ case MC_VIEW_TEXT : @@ -141,7 +141,7 @@ state->next_screen = mail_view_screen; #if defined(DOS) && !defined(WIN32) flush_index_cache(); /* save room on PC */ -@@ -295,10 +295,10 @@ +@@ -296,10 +296,10 @@ mn_dec_cur(stream, msgmap); if(i == mn_get_cur(msgmap)) q_status_message(SM_ORDER, 0, 2, @@ -154,7 +154,7 @@ } break; -@@ -310,7 +310,7 @@ +@@ -311,7 +311,7 @@ && (i = mn_get_cur(msgmap)) < mn_get_total(msgmap)){ mn_inc_cur(stream, msgmap); if(i == mn_get_cur(msgmap)) @@ -163,7 +163,7 @@ } else{ prompt[0] = '\0'; -@@ -327,7 +327,7 @@ +@@ -328,7 +328,7 @@ strcat(prompt, ". No more folders to TAB to."); } @@ -172,7 +172,7 @@ prompt[0] ? prompt : NULL); if(!IS_NEWS(stream)) -@@ -474,9 +474,9 @@ +@@ -475,9 +475,9 @@ } } else @@ -184,7 +184,7 @@ break; } -@@ -493,9 +493,9 @@ +@@ -494,9 +494,9 @@ */ if(F_OFF(F_AUTO_OPEN_NEXT_UNREAD, state)){ static ESCKEY_S next_opt[] = { @@ -197,7 +197,7 @@ {-1, 0, NULL, NULL} }; -@@ -521,7 +521,7 @@ +@@ -522,7 +522,7 @@ else any_messages(NULL, (mn_get_total(msgmap) > 0L) @@ -206,7 +206,7 @@ : NULL, NULL); } -@@ -539,7 +539,7 @@ +@@ -540,7 +540,7 @@ * global "zoom mode" flag to suppress messags from the index * should suffice. */ @@ -215,7 +215,7 @@ if(unzoom_index(state, msgmap)){ dprint(4, (debugfile, "\n\n ---- Exiting ZOOM mode ----\n")); q_status_message(SM_ORDER,0,2, "Index Zoom Mode is now off"); -@@ -551,7 +551,7 @@ +@@ -552,7 +552,7 @@ comatose(i), plural(i)); } else @@ -224,7 +224,7 @@ } break; -@@ -559,7 +559,7 @@ +@@ -560,7 +560,7 @@ /*---------- print message on paper ----------*/ case MC_PRINTMSG : @@ -233,7 +233,7 @@ cmd_print(state, msgmap, 0, in_index); break; -@@ -567,7 +567,7 @@ +@@ -568,7 +568,7 @@ /*---------- Take Address ----------*/ case MC_TAKE : @@ -242,7 +242,7 @@ cmd_take_addr(state, msgmap, 0); break; -@@ -575,7 +575,7 @@ +@@ -576,7 +576,7 @@ /*---------- Save Message ----------*/ case MC_SAVE : @@ -251,7 +251,7 @@ cmd_save(state, msgmap, 0); break; -@@ -583,7 +583,7 @@ +@@ -584,7 +584,7 @@ /*---------- Export message ----------*/ case MC_EXPORT : @@ -260,7 +260,7 @@ cmd_export(state, msgmap, question_line, 0); state->mangled_footer = 1; } -@@ -596,9 +596,9 @@ +@@ -597,9 +597,9 @@ dprint(2, (debugfile, "\n - expunge -\n")); if(IS_NEWS(stream) && stream->rdonly){ if((del_count = count_flagged(stream, F_DEL)) > 0L){ @@ -273,7 +273,7 @@ if(F_ON(F_FULL_AUTO_EXPUNGE, state) || (F_ON(F_AUTO_EXPUNGE, state) && (state->context_current -@@ -620,21 +620,20 @@ +@@ -621,21 +621,20 @@ state->mangled_body = 1; state->mangled_header = 1; @@ -300,7 +300,7 @@ break; } -@@ -653,7 +652,7 @@ +@@ -654,7 +653,7 @@ ret = 'y'; if(ret == 'x') @@ -309,7 +309,7 @@ if(ret != 'y') break; -@@ -705,11 +704,11 @@ +@@ -706,11 +705,11 @@ if(state->expunge_count <= 0) if(del_count) q_status_message1(SM_ORDER, 0, 3, @@ -323,7 +323,7 @@ break; -@@ -743,16 +742,15 @@ +@@ -744,16 +743,15 @@ */ refresh_sort(msgmap, FALSE); state->mangled_header = 1; @@ -345,7 +345,7 @@ } break; -@@ -760,7 +758,7 @@ +@@ -761,7 +759,7 @@ /*------- Make Selection -----------*/ case MC_SELECT : @@ -354,7 +354,7 @@ aggregate_select(state, msgmap, question_line, in_index); if(in_index && any_lflagged(msgmap, MN_SLCT) > 0L && !any_lflagged(msgmap, MN_HIDE) -@@ -792,7 +790,7 @@ +@@ -793,7 +791,7 @@ unzoom_index(state, msgmap); } else @@ -363,7 +363,7 @@ } break; -@@ -870,21 +868,21 @@ +@@ -871,21 +869,21 @@ { if(cmd == ctrl('Q') || cmd == ctrl('S')) q_status_message1(SM_ASYNC, 0, 2, @@ -392,7 +392,7 @@ } -@@ -1157,11 +1155,9 @@ +@@ -1158,11 +1156,9 @@ char *type, *cmd; { if(mn_get_total(map) <= 0L){ @@ -406,7 +406,7 @@ return(FALSE); } -@@ -1185,8 +1181,8 @@ +@@ -1186,8 +1182,8 @@ { if(READONLY_FOLDER || state->dead_stream){ q_status_message2(SM_ORDER | (state->dead_stream ? SM_DING : 0), 0, 3, @@ -417,7 +417,7 @@ return(FALSE); } -@@ -1206,7 +1202,7 @@ +@@ -1207,7 +1203,7 @@ cmd_cancelled(cmd) char *cmd; { @@ -426,7 +426,7 @@ } -@@ -1232,7 +1228,7 @@ +@@ -1233,7 +1229,7 @@ dprint(4, (debugfile, "\n - delete message -\n")); if(!(any_messages(msgmap, NULL, "to Delete") @@ -435,7 +435,7 @@ return; if(state->io_error_on_stream) { -@@ -1242,16 +1238,15 @@ +@@ -1243,16 +1239,15 @@ if(agg){ sequence = selected_sequence(state->mail_stream, msgmap, &del_count); @@ -455,7 +455,7 @@ lastmsg ? "" : long2string(msgno)); } -@@ -1311,7 +1306,7 @@ +@@ -1312,7 +1307,7 @@ dprint(4, (debugfile, "\n - undelete -\n")); if(!(any_messages(msgmap, NULL, "to Undelete") @@ -464,7 +464,24 @@ return; if(agg){ -@@ -1399,7 +1394,7 @@ +@@ -1332,12 +1327,12 @@ + if(del_count == 1L){ + update_titlebar_status(); + q_status_message(SM_ORDER, 0, 3, +- "Deletion mark removed, message won't be deleted"); ++ "以移除刪除標記,信件將不會遭刪除"); + } + else +- q_status_message2(SM_ORDER, 0, 3, +- "Deletion mark removed from %s message%s", +- comatose(del_count), plural(del_count)); ++ q_status_message1(SM_ORDER, 0, 3, ++ "移除 %s 封信件上的刪除標記", ++ comatose(del_count)); + + if(state->io_error_on_stream) { + state->io_error_on_stream = 0; +@@ -1401,7 +1396,7 @@ }; if(!(any_messages(msgmap, NULL, "to Flag") @@ -473,7 +490,7 @@ return; if(state->io_error_on_stream) { -@@ -1754,7 +1749,7 @@ +@@ -1756,7 +1751,7 @@ if(msgno_any_exceptions(state->mail_stream, msgmap) && want_to("Saved copy will NOT include entire message! Continue", 'y', 'n', NO_HELP, WT_FLUSH_IN | WT_SEQ_SENSITIVE) != 'y'){ @@ -482,7 +499,7 @@ return; } -@@ -1877,32 +1872,32 @@ +@@ -1879,32 +1874,32 @@ ekey[rc].ch = ctrl('T'); ekey[rc].rval = 2; ekey[rc].name = "^T"; @@ -520,7 +537,7 @@ } if(saveable_count > 1){ -@@ -2040,7 +2035,7 @@ +@@ -2042,7 +2037,7 @@ /* else fall thru like they cancelled */ case 1 : @@ -529,9 +546,9 @@ done--; break; -@@ -3162,16 +3157,16 @@ - { - if(context && ps_global->context_list->next && context_isambig(folder)){ +@@ -3172,16 +3167,16 @@ + } + sprintf(tmp_20k_buf, - "Folder \"%.15s%s\" in <%.15s%s> doesn't exist. Create", + "信件匣 \"%.15s%s\" 在 <%.15s%s> 不存在。要建立", @@ -549,7 +566,7 @@ return(-1); } -@@ -3295,14 +3290,14 @@ +@@ -3305,14 +3300,14 @@ export_opts[i = 0].ch = ctrl('T'); export_opts[i].rval = 10; export_opts[i].name = "^T"; @@ -566,7 +583,7 @@ } #endif /* !(DOS || MAC) */ -@@ -3310,7 +3305,7 @@ +@@ -3320,7 +3315,7 @@ export_opts[i].ch = ctrl('I'); export_opts[i].rval = 11; export_opts[i].name = "TAB"; @@ -575,7 +592,7 @@ } #if 0 -@@ -3319,7 +3314,7 @@ +@@ -3329,7 +3324,7 @@ export_opts[i].ch = ctrl('X'); export_opts[i].rval = 14; export_opts[i].name = "^X"; @@ -584,7 +601,7 @@ } #endif -@@ -3333,7 +3328,7 @@ +@@ -3343,7 +3338,7 @@ if(r < 0){ switch(r){ case -1: @@ -593,7 +610,7 @@ break; case -2: -@@ -3355,7 +3350,7 @@ +@@ -3365,7 +3360,7 @@ if(ps_global->restricted){ q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -602,7 +619,7 @@ goto fini; } -@@ -3374,7 +3369,7 @@ +@@ -3384,7 +3379,7 @@ || !format_message(mn_m2raw(msgmap, mn_get_cur(msgmap)), env, b, FM_NEW_MESS | FM_NOWRAP, pc)){ q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -611,7 +628,7 @@ break; } -@@ -3387,18 +3382,18 @@ +@@ -3397,18 +3392,18 @@ (void) close_system_pipe(&syspipe); else q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -633,7 +650,7 @@ goto fini; } -@@ -3512,7 +3507,7 @@ +@@ -3522,7 +3517,7 @@ STORE_S *store = NULL; struct variable *vars = ps->vars; static ESCKEY_S simple_export_opts[] = { @@ -642,7 +659,7 @@ {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; -@@ -3520,7 +3515,7 @@ +@@ -3530,7 +3525,7 @@ simple_export_opts[r].ch = ctrl('I'); simple_export_opts[r].rval = 11; simple_export_opts[r].name = "TAB"; @@ -651,7 +668,7 @@ } if(!srctext){ -@@ -3593,7 +3588,7 @@ +@@ -3603,7 +3598,7 @@ break; case -1: @@ -660,7 +677,7 @@ break; case -2: -@@ -4180,32 +4175,32 @@ +@@ -4192,32 +4187,32 @@ ekey[rc].ch = (allow_list) ? ctrl('T') : 0 ; ekey[rc].rval = (allow_list) ? 2 : 0; ekey[rc].name = (allow_list) ? "^T" : ""; @@ -698,7 +715,7 @@ } if(ps_global->context_list->next){ -@@ -4321,15 +4316,15 @@ +@@ -4335,15 +4330,15 @@ newfolder); else if(tc->use & CNTXT_INCMNG) q_status_message1(SM_ORDER, 0, 3, @@ -718,7 +735,7 @@ newfolder); return(NULL); -@@ -4342,7 +4337,7 @@ +@@ -4356,7 +4351,7 @@ /* fall thru like they cancelled */ case 1 : /* o_e says user cancel */ @@ -727,7 +744,7 @@ return(NULL); case 2 : /* o_e says user wants list */ -@@ -4578,7 +4573,7 @@ +@@ -4592,7 +4587,7 @@ else if ((new_context->use & CNTXT_INCMNG) && (folder_index(newfolder, new_context, FI_FOLDER) < 0)){ q_status_message1(SM_ORDER, 3, 4, @@ -736,7 +753,22 @@ return(0); } } -@@ -4659,7 +4654,7 @@ +@@ -4632,11 +4627,10 @@ + clear_index_cache(); + /* MUST sort before restoring msgno! */ + refresh_sort(ps_global->msgmap, FALSE); +- q_status_message3(SM_ORDER, 0, 3, +- "Opened folder \"%s\" with %s message%s", ++ q_status_message2(SM_ORDER, 0, 3, ++ "信件匣 \"%s\" 已開啟,共 %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))); + return(1); + } + +@@ -4673,7 +4667,7 @@ } } @@ -745,7 +777,7 @@ pretty_fn(newfolder), 70), "\""); we_cancel = busy_alarm(1, status_msg, NULL, 1); -@@ -4742,7 +4737,7 @@ +@@ -4756,7 +4750,7 @@ && !mn_get_revsort(ps_global->msgmap))) refresh_sort(ps_global->msgmap, FALSE); @@ -754,7 +786,7 @@ old_folder); } } -@@ -4823,14 +4818,13 @@ +@@ -4837,14 +4831,13 @@ /* UWIN doesn't want to see this message */ if(!ps_global->nr_mode) @@ -773,7 +805,7 @@ sort_folder(ps_global->msgmap, ps_global->def_sort, ps_global->def_sort_rev, TRUE); -@@ -4996,9 +4990,9 @@ +@@ -5010,9 +5003,9 @@ char ing[4]; if(final_msg) @@ -785,7 +817,7 @@ buff1[0] = '\0'; buff2[0] = '\0'; -@@ -5007,7 +5001,7 @@ +@@ -5021,7 +5014,7 @@ stream->mailbox)); if(!stream->rdonly){ @@ -794,7 +826,7 @@ flush_status_messages(1); /* Save read messages? */ -@@ -5047,10 +5041,8 @@ +@@ -5061,10 +5054,8 @@ } else{ sprintf(prompt_b, @@ -807,7 +839,7 @@ ret = want_to(prompt_b, 'y', 0, NO_HELP, WT_NORM); } -@@ -5061,13 +5053,10 @@ +@@ -5075,13 +5066,10 @@ if(ret == 'y'){ sprintf(buff2, @@ -822,7 +854,7 @@ long2string(delete_count)); if(final_msg) *final_msg = cpystr(buff2); -@@ -5093,17 +5082,15 @@ +@@ -5107,17 +5095,15 @@ if(ret != 'y'){ if(stream->nmsgs){ sprintf(buff2, @@ -844,7 +876,7 @@ ing, pretty_fn(folder)); } -@@ -5122,7 +5109,7 @@ +@@ -5136,7 +5122,7 @@ q_status_message(SM_ORDER, F_ON(F_AUTO_READ_MSGS,ps_global) ? 0 : 3, 5, moved_msg); @@ -853,7 +885,7 @@ ing, pretty_fn(folder)); if(F_ON(F_NEWS_CROSS_DELETE, ps_global)) -@@ -5130,7 +5117,7 @@ +@@ -5144,7 +5130,7 @@ } else sprintf(buff2, @@ -862,7 +894,7 @@ ing, pretty_fn(folder)); if(final_msg) -@@ -5430,18 +5417,18 @@ +@@ -5444,18 +5430,18 @@ if(in_index && F_ON(F_PRINT_INDEX, state)){ char m[10]; static ESCKEY_S prt_opts[] = { @@ -886,7 +918,7 @@ if(agg) restore_selected(msgmap); -@@ -5458,11 +5445,11 @@ +@@ -5472,11 +5458,11 @@ } if(do_index) @@ -901,7 +933,7 @@ if(open_printer(prompt) < 0){ if(agg) -@@ -5725,7 +5712,7 @@ +@@ -5740,7 +5726,7 @@ /* else fall thru as if cancelled */ case 1 : @@ -910,7 +942,7 @@ done++; break; -@@ -5808,7 +5795,7 @@ +@@ -5823,7 +5809,7 @@ sel_opts = sel_opts2; if(old_tot = any_lflagged(msgmap, MN_SLCT)){ i = get_lflag(state->mail_stream, msgmap, mn_get_cur(msgmap), MN_SLCT); @@ -919,7 +951,7 @@ sel_opts += 2; /* disable extra options */ switch(q = radio_buttons(sel_pmt1, q_line, sel_opts1, 'c', 'x', help, RB_NORM)){ -@@ -5852,7 +5839,7 @@ +@@ -5867,7 +5853,7 @@ */ switch(q){ case 'x': /* cancel */ @@ -928,7 +960,7 @@ return; case 'c' : /* select/unselect current */ -@@ -6060,14 +6047,14 @@ +@@ -6075,14 +6061,14 @@ sel_opts3[i].ch = '*'; sel_opts3[i].rval = '*'; sel_opts3[i].name = "*"; @@ -945,7 +977,7 @@ } /* -@@ -6079,7 +6066,7 @@ +@@ -6094,7 +6080,7 @@ sel_opts3[i].ch = 'b'; sel_opts3[i].rval = 'b'; sel_opts3[i].name = "B"; @@ -954,7 +986,7 @@ } if(F_ON(F_ENABLE_PRYNT, state)){ -@@ -6150,7 +6137,7 @@ +@@ -6165,7 +6151,7 @@ break; case 'x' : /* cancel */ @@ -963,7 +995,7 @@ rv = 0; break; -@@ -6267,7 +6254,7 @@ +@@ -6282,7 +6268,7 @@ *t = '\0'; if(r == 1 || numbers[0] == '\0'){ @@ -972,7 +1004,7 @@ return(1); } else -@@ -6393,7 +6380,7 @@ +@@ -6408,7 +6394,7 @@ prompt, sel_date_opt, help, &flags); switch (r){ case 1 : @@ -981,7 +1013,7 @@ return(1); case 3 : -@@ -6503,15 +6490,15 @@ +@@ -6518,15 +6504,15 @@ ekey[0].ch = ctrl('T'); ekey[0].name = "^T"; ekey[0].rval = 10; @@ -1000,7 +1032,7 @@ break; case 's' : -@@ -6519,7 +6506,7 @@ +@@ -6534,7 +6520,7 @@ ekey[0].ch = ctrl('X'); ekey[0].name = "^X"; ekey[0].rval = 13; @@ -1009,7 +1041,7 @@ break; case 'a' : -@@ -6618,7 +6605,7 @@ +@@ -6633,7 +6619,7 @@ } if(type == 'x' || r == 'x'){ @@ -1018,7 +1050,7 @@ return(1); } -@@ -6799,7 +6786,7 @@ +@@ -6814,7 +6800,7 @@ NO_HELP, RB_NORM); if(s == 'x'){ @@ -1027,7 +1059,7 @@ return(1); } else if(s == '!') -@@ -6896,7 +6883,7 @@ +@@ -6911,7 +6897,7 @@ /*----- String together the prompt ------*/ tmp[1] = '\0'; @@ -1036,7 +1068,7 @@ for(i = 0; state->sort_types[i] != EndofList && i < 8; i++) { sorts[i].rval = i; p = sorts[i].label = sort_name(state->sort_types[i]); -@@ -6913,7 +6900,7 @@ +@@ -6928,7 +6914,7 @@ sorts[i].ch = 'r'; sorts[i].rval = 'r'; sorts[i].name = cpystr("R"); @@ -1045,7 +1077,7 @@ sorts[++i].ch = -1; help = h_select_sort; -@@ -6926,7 +6913,7 @@ +@@ -6941,7 +6927,7 @@ } else{ retval = 0; diff --git a/chinese/pine4/files/patch-bc b/chinese/pine4/files/patch-bc index 8d0dbd503e48..855878fdbafb 100644 --- a/chinese/pine4/files/patch-bc +++ b/chinese/pine4/files/patch-bc @@ -1,5 +1,5 @@ ---- pine/mailpart.c.orig Wed Sep 16 04:00:39 1998 -+++ pine/mailpart.c Tue Sep 22 20:29:13 1998 +--- pine/mailpart.c.orig Fri Feb 5 07:14:39 1999 ++++ pine/mailpart.c Tue Feb 23 15:32:33 1999 @@ -142,18 +142,18 @@ {HELP_MENU, OTHER_MENU, @@ -62,14 +62,14 @@ 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!"); +- "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 %s has only one part (the message body), and no attachments.", -+ "信件 %s 僅有一部分(信件本體),沒有附件。", ++ "信件 %s 僅有一部分(信件本體),沒有附件。", long2string(mn_get_cur(ps->msgmap))); /* @@ -154,7 +154,7 @@ ps_global->context_current, ps_global->cur_folder, ps_global->msgmap, 1, FolderName,0,0); -@@ -1318,7 +1318,7 @@ +@@ -1317,7 +1317,7 @@ gf_io_t pc; STORE_S *store; static ESCKEY_S att_save_opts[] = { @@ -163,7 +163,7 @@ {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; -@@ -1351,7 +1351,7 @@ +@@ -1346,7 +1346,7 @@ att_save_opts[++r].ch = ctrl('V'); att_save_opts[r].rval = 12; att_save_opts[r].name = "^V"; @@ -172,7 +172,7 @@ } #endif /* !(DOS || MAC) */ -@@ -1359,7 +1359,7 @@ +@@ -1354,7 +1354,7 @@ att_save_opts[++r].ch = ctrl('I'); att_save_opts[r].rval = 11; att_save_opts[r].name = "TAB"; @@ -181,7 +181,7 @@ } att_save_opts[++r].ch = -1; -@@ -1393,7 +1393,7 @@ +@@ -1388,7 +1388,7 @@ if(ps_global->restricted){ q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -190,7 +190,7 @@ return; } -@@ -1401,7 +1401,7 @@ +@@ -1396,7 +1396,7 @@ tfp = temp_nam(NULL, "pd"); dprint(1, (debugfile, "Download attachment called!\n")); if(store = so_get(FileStar, tfp, WRITE_ACCESS|OWNER_ONLY)){ @@ -199,7 +199,7 @@ we_cancel = init_att_progress(prompt_buf, ps_global->mail_stream, a->body); -@@ -1410,7 +1410,7 @@ +@@ -1405,7 +1405,7 @@ if(err = detach(ps_global->mail_stream, msgno, a->number, &len, pc, NULL)) q_status_message2(SM_ORDER | SM_DING, 3, 5, @@ -208,7 +208,7 @@ err, tfp); /* cancel regardless, so it doesn't get in way of xfer */ -@@ -1427,18 +1427,18 @@ +@@ -1422,18 +1422,18 @@ (void)close_system_pipe(&syspipe); else q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -230,7 +230,7 @@ a->number); return; -@@ -1450,12 +1450,12 @@ +@@ -1445,12 +1445,12 @@ if((store = so_get(FileStar, full_filename, WRITE_ACCESS)) == NULL){ q_status_message2(SM_ORDER | SM_DING, 3, 5, @@ -245,7 +245,7 @@ we_cancel = init_att_progress(prompt_buf, ps_global->mail_stream, a->body); gf_set_so_writec(&pc, store); -@@ -1474,7 +1474,7 @@ +@@ -1469,7 +1469,7 @@ truncate(full_filename, (over == -1) ? orig_size : 0); q_status_message2(SM_ORDER | SM_DING, 3, 5, @@ -254,7 +254,7 @@ err, full_filename); } else{ -@@ -1552,7 +1552,7 @@ +@@ -1547,7 +1547,7 @@ MESSAGECACHE *mc; STORE_S *so; @@ -263,7 +263,7 @@ if(save_prompt(ps_global, &cntxt, newfolder, nmsgs, a->body->nested.msg->env, msgno, a->number)){ save_folder = (strucmp(newfolder, ps_global->inbox_name) == 0) -@@ -1574,11 +1574,11 @@ +@@ -1569,11 +1569,11 @@ a->body->size.bytes, flags, date, so); if(rv == 1) q_status_message2(SM_ORDER, 0, 4, @@ -277,7 +277,7 @@ /* else whatever broke in save_fetch_append shoulda bitched */ so_give(&so); -@@ -1620,7 +1620,7 @@ +@@ -1615,7 +1615,7 @@ if(MIME_MSG(part->body.type, part->body.subtype)) cnt++; @@ -286,7 +286,7 @@ if(save_prompt(ps_global, &cntxt, newfolder, nmsgs, NULL, 0, NULL)){ save_folder = (strucmp(newfolder, ps_global->inbox_name) == 0) -@@ -1654,11 +1654,11 @@ +@@ -1649,11 +1649,11 @@ if(rv == 1) q_status_message2(SM_ORDER, 0, 4, @@ -300,7 +300,7 @@ /* else whatever broke in save_fetch_append shoulda bitched */ if(our_stream) -@@ -1712,7 +1712,7 @@ +@@ -1707,7 +1707,7 @@ ATTACH_S *ap = a; STORE_S *store; static ESCKEY_S opts[] = { @@ -309,7 +309,7 @@ {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; -@@ -1720,7 +1720,7 @@ +@@ -1715,7 +1715,7 @@ opts[i].ch = ctrl('I'); opts[i].rval = 11; opts[i].name = "TAB"; @@ -318,7 +318,7 @@ } filename[0] = full_filename[0] = '\0'; -@@ -1733,12 +1733,12 @@ +@@ -1728,12 +1728,12 @@ if(rv < 0){ switch(rv){ case -1: @@ -333,7 +333,7 @@ ps_global->VAR_OPER_DIR); break; } -@@ -1752,17 +1752,17 @@ +@@ -1747,17 +1747,17 @@ q_status_message(SM_ORDER | SM_DING, 3, 4, err); else q_status_message3(SM_ORDER, 0, 4, @@ -355,7 +355,7 @@ full_filename, error_description(errno)); } -@@ -1785,7 +1785,7 @@ +@@ -1780,7 +1780,7 @@ ATTACH_S *ap; STORE_S *store; static ESCKEY_S opts[] = { @@ -364,7 +364,7 @@ {-1, 0, NULL, NULL}, {-1, 0, NULL, NULL}}; -@@ -1793,7 +1793,7 @@ +@@ -1788,7 +1788,7 @@ opts[i].ch = ctrl('I'); opts[i].rval = 11; opts[i].name = "TAB"; @@ -373,7 +373,7 @@ } filename[0] = full_filename[0] = '\0'; -@@ -1806,12 +1806,12 @@ +@@ -1801,12 +1801,12 @@ if(rv < 0){ switch(rv){ case -1: @@ -388,7 +388,7 @@ ps_global->VAR_OPER_DIR); break; } -@@ -1833,7 +1833,7 @@ +@@ -1828,7 +1828,7 @@ sprintf(tmp_20k_buf, " [Unknown Message subtype: %s ]\n", ap->body->subtype); if(!so_puts(store, tmp_20k_buf)) @@ -397,7 +397,7 @@ } else{ count++; -@@ -1842,29 +1842,29 @@ +@@ -1837,29 +1837,29 @@ } } else if(!so_puts(store, "Unknown type in Digest")) @@ -434,7 +434,7 @@ full_filename, error_description(errno)); } -@@ -1933,7 +1933,7 @@ +@@ -1928,7 +1928,7 @@ q_status_message2(SM_ORDER | SM_DING, 3, 3, @@ -443,7 +443,7 @@ long2string(msgno), a->number); return(0); } -@@ -2014,14 +2014,14 @@ +@@ -2009,14 +2009,14 @@ /*----- Can't display this type ------*/ if(a->body->encoding < ENCOTHER) q_status_message4(SM_ORDER | SM_DING, 3, 5, @@ -461,7 +461,7 @@ body_encodings[(a->body->encoding <= ENCMAX) ? a->body->encoding : ENCOTHER]); -@@ -2243,7 +2243,7 @@ +@@ -2238,7 +2238,7 @@ clear_index_cache_ent(msgno); if(store = format_text_att(msgno, a, &handles)){ @@ -470,7 +470,7 @@ free_handles(&handles); so_give(&store); /* free resources associated with store */ } -@@ -2411,22 +2411,22 @@ +@@ -2406,22 +2406,22 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = src; @@ -497,7 +497,7 @@ } if(!handles){ -@@ -2858,9 +2858,9 @@ +@@ -2853,9 +2853,9 @@ sargs.text.text = so_text(store); sargs.text.src = CharStar; sargs.text.desc = "attachment info"; @@ -509,18 +509,18 @@ scrolltool(&sargs); -@@ -2922,7 +2922,7 @@ +@@ -2970,7 +2970,7 @@ else /* partially formatted outgoing message */ pine_send(outgoing, &body, ps_global->nr_mode - ? "SEND MESSAGE" : "FORWARD MESSAGE", + ? "送出信件" : "轉寄信件", - NULL, NULL, NULL, NULL, NULL, FALSE); + role, NULL, NULL, redraft_pos, NULL, NULL, FALSE); ps_global->mangled_screen = 1; -@@ -2938,12 +2938,12 @@ - mail_free_body(&body); +@@ -2988,12 +2988,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."); + "取得信件內容時發生錯誤。無法轉寄信件。"); @@ -532,17 +532,35 @@ + "無法配置信件文字"); mail_free_envelope(&outgoing); - } -@@ -3008,7 +3008,7 @@ + free_role(&role); +@@ -3032,7 +3032,7 @@ + + ret = 'n'; + if(ps_global->full_header) +- ret = want_to("Forward message as an attachment", 'n', 0, ++ ret = want_to("將信件以附件形式轉寄", 'n', 0, + NO_HELP, WT_SEQ_SENSITIVE); + /* Setup possible role */ + if(!ps_global->anonymous && (pattern_h = open_nonempty_patterns())){ +@@ -3043,7 +3043,7 @@ + else{ /* cancel reply */ + role = NULL; + close_patterns(&pattern_h); +- cmd_cancelled("Forward"); ++ cmd_cancelled("轉寄"); + mail_free_envelope(&outgoing); + so_give((STORE_S **) &msgtext); + return; +@@ -3121,7 +3121,7 @@ pine_simple_send(outgoing, &body, NULL, NULL, NULL, 1); else /* partially formatted outgoing message */ pine_send(outgoing, &body, - ps_global->nr_mode ? "SEND MESSAGE" : "FORWARD MESSAGE", + ps_global->nr_mode ? "送出信件" : "轉寄信件", - NULL, NULL, NULL, NULL, NULL, FALSE); + role, NULL, NULL, redraft_pos, NULL, NULL, FALSE); ps_global->mangled_screen = 1; -@@ -3023,16 +3023,16 @@ +@@ -3138,16 +3138,16 @@ else{ so_give((STORE_S **) &msgtext); q_status_message(SM_ORDER | SM_DING, 4, 5, @@ -562,16 +580,16 @@ long2string(msgno)); mail_free_envelope(&outgoing); -@@ -3105,7 +3105,7 @@ - tp = body_partno(stream, msgno, a->body), - msgtext, prefix, include_text)){ +@@ -3256,7 +3256,7 @@ + : ps_global->VAR_SIGNATURE_FILE, + &redraft_pos)){ /* partially formatted outgoing message */ - pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY", + pine_send(outgoing, &body, "編輯信件回函", - fcc.tptr, NULL, NULL, NULL, NULL, 0); + role, fcc.tptr, NULL, redraft_pos, NULL, NULL, 0); pine_free_body(&body); -@@ -3113,13 +3113,13 @@ +@@ -3264,13 +3264,13 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -587,7 +605,7 @@ } seeyalater: -@@ -3186,7 +3186,7 @@ +@@ -3340,7 +3340,7 @@ sprintf(prompt, "Pipe %sattachment %s to %s: ", raw ? "RAW " : "", a->number, capture ? "" : "(Free Output) "); @@ -596,7 +614,7 @@ 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, -@@ -3204,7 +3204,7 @@ +@@ -3358,7 +3358,7 @@ } else if(rc == 0){ if(pipe_command[0] == '\0'){ @@ -605,7 +623,7 @@ break; } -@@ -3278,7 +3278,7 @@ +@@ -3436,7 +3436,7 @@ break; } else if(rc == 1){ diff --git a/chinese/pine4/files/patch-bd b/chinese/pine4/files/patch-bd index 08e112efd180..4a01615b4505 100644 --- a/chinese/pine4/files/patch-bd +++ b/chinese/pine4/files/patch-bd @@ -1,6 +1,6 @@ ---- pine/mailview.c.orig Thu Sep 17 05:56:10 1998 -+++ pine/mailview.c Tue Sep 22 19:30:34 1998 -@@ -145,8 +145,8 @@ +--- pine/mailview.c.orig Tue Feb 2 01:26:04 1999 ++++ pine/mailview.c Tue Feb 23 15:45:46 1999 +@@ -157,8 +157,8 @@ static struct key view_keys[] = {HELP_MENU, OTHER_MENU, @@ -11,7 +11,7 @@ PREVMSG_MENU, NEXTMSG_MENU, PREVPAGE_MENU, -@@ -171,11 +171,11 @@ +@@ -183,11 +183,11 @@ HELP_MENU, OTHER_MENU, @@ -27,7 +27,7 @@ JUMP_MENU, TAB_MENU, HDRMODE_MENU, -@@ -192,7 +192,7 @@ +@@ -204,7 +204,7 @@ #define FLAG_KEY 34 #define VIEW_PIPE_KEY 35 @@ -36,7 +36,7 @@ {HELP_MENU, WHEREIS_MENU, QUIT_MENU, -@@ -216,7 +216,7 @@ +@@ -228,7 +228,7 @@ NEXTMSG_MENU, PREVPAGE_MENU, NEXTPAGE_MENU, @@ -45,7 +45,7 @@ JUMP_MENU, PRYNTTXT_MENU, SAVE_MENU, -@@ -238,7 +238,7 @@ +@@ -250,7 +250,7 @@ static struct key simple_text_keys[] = {HELP_MENU, NULL_MENU, @@ -54,7 +54,7 @@ NULL_MENU, NULL_MENU, NULL_MENU, -@@ -247,7 +247,7 @@ +@@ -259,7 +259,7 @@ PRYNTTXT_MENU, WHEREIS_MENU, FWDEMAIL_MENU, @@ -63,7 +63,7 @@ INST_KEY_MENU(simple_text_keymenu, simple_text_keys); -@@ -388,7 +388,7 @@ +@@ -403,7 +403,7 @@ * we were viewing. If so, make sure we don't just come back. */ if(mn_get_total(ps->msgmap) <= 0L || !ps->mail_stream){ @@ -72,7 +72,7 @@ ps->next_screen = mail_index_screen; break; } -@@ -402,7 +402,7 @@ +@@ -417,7 +417,7 @@ body = NULL; if(!(env = mail_fetchstructure(ps->mail_stream, raw_msgno, &body)) || !(mc = mail_elt(ps->mail_stream, raw_msgno))){ @@ -81,7 +81,7 @@ comatose(mn_get_cur(ps->msgmap))); dprint(1, (debugfile, "!!!! ERROR fetching %s of msg %ld\n", env ? "elt" : "env", mn_get_cur(ps->msgmap))); -@@ -457,7 +457,7 @@ +@@ -472,7 +472,7 @@ memset(&scrollargs, 0, sizeof(SCROLL_S)); scrollargs.text.text = so_text(store); scrollargs.text.src = src; @@ -90,7 +90,7 @@ /* * make first selectable handle the default -@@ -477,11 +477,11 @@ +@@ -492,11 +492,11 @@ else scrollargs.body_valid = 1; @@ -104,7 +104,7 @@ scrollargs.keys.menu = &view_keymenu; scrollargs.keys.what = save_what; setbitmap(scrollargs.keys.bitmap); -@@ -1214,7 +1214,7 @@ +@@ -1237,7 +1237,7 @@ /*---- format and copy envelope ----*/ if(ps_global->full_header) q_status_message(SM_INFO, 0, 3, @@ -113,7 +113,7 @@ HD_INIT(&h, ps_global->VAR_VIEW_HEADERS, ps_global->view_all_except, FE_DEFAULT); -@@ -1253,7 +1253,7 @@ +@@ -1276,7 +1276,7 @@ if(append_file_name) fs_give((void **)&append_file_name); @@ -122,7 +122,7 @@ error_description(errno)); return(0); } -@@ -1547,7 +1547,7 @@ +@@ -1570,7 +1570,7 @@ write_error: if(!(flgs & FM_DISPLAY)) @@ -131,7 +131,7 @@ decode_err ? decode_err : error_description(errno)); return(0); -@@ -1885,12 +1885,12 @@ +@@ -1908,12 +1908,12 @@ char prompt[256], tmp[MAILTMPLEN]; int rc, flags, local_h; static ESCKEY_S launch_opts[] = { @@ -148,16 +148,21 @@ {-1, 0, NULL, NULL}}; if(handle->type == URL){ -@@ -1920,7 +1920,7 @@ +@@ -1939,11 +1939,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("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'; -@@ -1964,7 +1964,7 @@ +@@ -1987,7 +1987,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 2, 2, @@ -166,7 +171,7 @@ error_description(errno)); continue; } -@@ -1994,8 +1994,8 @@ +@@ -2017,8 +2017,8 @@ return(1); while(1){ @@ -177,9 +182,9 @@ (handle->type == URL) ? "\"" : "", (handle->type == URL) ? handle->h.url.path : "", (handle->type == URL) -@@ -2606,11 +2606,11 @@ +@@ -2723,11 +2723,11 @@ mode = PIPE_RESET | PIPE_USER ; - if(syspipe = open_system_pipe(cmd, NULL, NULL, mode)){ + if(syspipe = open_system_pipe(cmd, NULL, NULL, mode, 0)){ close_system_pipe(&syspipe); - q_status_message(SM_ORDER, 0, 4, "VIEWER command completed"); + q_status_message(SM_ORDER, 0, 4, "檢視器命令完成"); @@ -191,7 +196,7 @@ } else if(f = url_local_handler(handle->h.url.path)){ if((*f)(handle->h.url.path) > 1) -@@ -2618,7 +2618,7 @@ +@@ -2735,7 +2735,7 @@ } else q_status_message1(SM_ORDER, 2, 2, @@ -200,7 +205,7 @@ handle->h.url.path); return(rv); -@@ -2630,7 +2630,7 @@ +@@ -2747,7 +2747,7 @@ int return_value; { q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -209,7 +214,7 @@ return(return_value); } -@@ -2920,7 +2920,7 @@ +@@ -3046,7 +3046,7 @@ } else q_status_message(SM_ORDER | SM_DING, 3, 4, @@ -218,7 +223,7 @@ if(outgoing) mail_free_envelope(&outgoing); -@@ -2984,7 +2984,7 @@ +@@ -3113,7 +3113,7 @@ else if(errstr) q_status_message(SM_ORDER|SM_DING, 3, 3, errstr); else @@ -227,7 +232,7 @@ break; -@@ -3007,7 +3007,7 @@ +@@ -3136,7 +3136,7 @@ if(uid_val != ps_global->mail_stream->uid_validity){ /* Complain! */ q_status_message(SM_ORDER|SM_DING, 3, 3, @@ -236,7 +241,7 @@ } if(uid){ -@@ -3023,7 +3023,7 @@ +@@ -3152,7 +3152,7 @@ if(i > mn_get_total(ps_global->msgmap)) q_status_message(SM_ORDER, 2, 3, @@ -245,7 +250,7 @@ } else if(search){ /* -@@ -3044,9 +3044,9 @@ +@@ -3173,9 +3173,9 @@ if(i = any_lflagged(ps_global->msgmap, MN_SLCT)){ extern long zoom_index(); @@ -258,7 +263,7 @@ /* Zoom the index! */ zoom_index(ps_global, ps_global->msgmap); } -@@ -3185,9 +3185,9 @@ +@@ -3314,9 +3314,9 @@ if(auth && *auth != '*') q_status_message1(SM_ORDER, 3, 3, @@ -271,7 +276,7 @@ /* * At this point our structure should contain the -@@ -3272,7 +3272,7 @@ +@@ -3401,7 +3401,7 @@ if(i > mn_get_total(ps_global->msgmap)) q_status_message(SM_ORDER, 2, 3, @@ -280,7 +285,7 @@ } break; -@@ -3386,7 +3386,7 @@ +@@ -3515,7 +3515,7 @@ } else q_status_message1(SM_ORDER | SM_DING, 0, 3, @@ -289,7 +294,7 @@ return(1); } -@@ -3413,7 +3413,7 @@ +@@ -3542,7 +3542,7 @@ dprint(2, (debugfile, "-- bogus url \"%s\": %s\n", url ? url : "<NULL URL>", reason)); if(url) @@ -298,7 +303,7 @@ (void *) (strchr(url, ':') - url), url, reason); return(0); -@@ -3554,7 +3554,7 @@ +@@ -3684,7 +3684,7 @@ write_error: if(style == QStatus) @@ -307,7 +312,7 @@ error_description(errno)); return(1); -@@ -3805,7 +3805,7 @@ +@@ -3935,7 +3935,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, @@ -316,7 +321,7 @@ rv = FHT_WRTERR; } else -@@ -3815,7 +3815,7 @@ +@@ -3945,7 +3945,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, @@ -325,7 +330,7 @@ rv = FHT_WRTERR; } } -@@ -3841,7 +3841,7 @@ +@@ -3971,7 +3971,7 @@ if(errstr = gf_pipe(tmp_gc, final_pc)){ rv = FHT_WRTERR; q_status_message1(SM_ORDER | SM_DING, 3, 3, @@ -334,7 +339,7 @@ } } -@@ -3984,7 +3984,7 @@ +@@ -4115,7 +4115,7 @@ format_newsgroup_string("Newsgroups: ", e->newsgroups, prefix, pc); if(e->ngbogus) q_status_message(SM_ORDER, 0, 3, @@ -343,7 +348,7 @@ } if((which & FE_FOLLOWUPTO) && e->followup_to) -@@ -4624,7 +4624,7 @@ +@@ -4756,7 +4756,7 @@ } if(!sparms->bar.title) @@ -352,16 +357,16 @@ if(sparms->bar.style == TitleBarNone) sparms->bar.style = MsgTextPercent; -@@ -4773,7 +4773,7 @@ +@@ -4914,7 +4914,7 @@ } - if(first_view && num_display_lines >= get_scroll_text_lines()) + if(first_view && num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "ALL of %s", STYLE_NAME(sparms)); -+ q_status_message1(SM_INFO, 0, 1, "%s 全部", STYLE_NAME(sparms)); ++ q_status_message1(SM_INFO, 0, 1, "%s全部", STYLE_NAME(sparms)); force = 0; /* may not need to next time around */ -@@ -4898,7 +4898,7 @@ +@@ -5047,7 +5047,7 @@ whereis_pos.row = 0; if(sparms->help.text == NO_HELP || ps_global->nr_mode){ q_status_message(SM_ORDER, 0, 5, @@ -370,7 +375,7 @@ break; } -@@ -4937,12 +4937,12 @@ +@@ -5086,12 +5086,12 @@ cur_top_line -= scroll_lines; if(cur_top_line <= 0){ cur_top_line = 0; @@ -379,31 +384,31 @@ STYLE_NAME(sparms)); } } - else -- q_status_message1(SM_ORDER, 0, 1, "Already at start of %s", -+ q_status_message1(SM_ORDER, 0, 1, "已經在%s的起始", - STYLE_NAME(sparms)); - break; + else{ +- q_status_message1(SM_ORDER, 0, 1, "Already at start of %s", ++ q_status_message1(SM_ORDER, 0, 1, "已經在%s的起始", + STYLE_NAME(sparms)); -@@ -4956,12 +4956,12 @@ + /* hilite last available handle */ +@@ -5117,12 +5117,12 @@ cur_top_line += scroll_lines; - if(cur_top_line + num_display_lines >= get_scroll_text_lines()) + if(cur_top_line + num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "END of %s", + q_status_message1(SM_INFO, 0, 1, "%s結尾", STYLE_NAME(sparms)); } else if(!sparms->end_scroll - || !(done = (*sparms->end_scroll)(sparms))) -- q_status_message1(SM_ORDER, 0, 1, "Already at end of %s", -+ q_status_message1(SM_ORDER, 0, 1, "已經在%s的結尾", - STYLE_NAME(sparms)); - - break; -@@ -4978,11 +4978,11 @@ + || !(done = (*sparms->end_scroll)(sparms))){ +- q_status_message1(SM_ORDER, 0, 1, "Already at end of %s", ++ q_status_message1(SM_ORDER, 0, 1, "已經在%s的結尾", + STYLE_NAME(sparms)); + /* hilite last available handle */ + if(sparms->text.handles){ +@@ -5184,11 +5184,11 @@ + whereis_pos.row = 0; cur_top_line++; - if(cur_top_line + num_display_lines - >= get_scroll_text_lines()) + if(cur_top_line + num_display_lines >= scroll_text_lines()) - q_status_message1(SM_INFO, 0, 1, "END of %s", + q_status_message1(SM_INFO, 0, 1, "%s結尾", STYLE_NAME(sparms)); @@ -414,7 +419,7 @@ STYLE_NAME(sparms)); } -@@ -4999,11 +4999,11 @@ +@@ -5243,11 +5243,11 @@ if(cur_top_line){ cur_top_line--; if(cur_top_line == 0) @@ -428,25 +433,25 @@ STYLE_NAME(sparms)); } -@@ -5034,7 +5034,7 @@ +@@ -5281,7 +5281,7 @@ } - q_status_message(SM_ORDER, 0, 1, -- "Already on last selectable item"); -+ "已經在最後一個可選擇的項目上"); + q_status_message1(SM_ORDER, 0, 1, +- "Already on last item in %s", ++ "已經在%s中最後一個可選擇的項目上", + STYLE_NAME(sparms)); } - break; -@@ -5064,7 +5064,7 @@ +@@ -5315,7 +5315,7 @@ } - q_status_message(SM_ORDER, 0, 1, -- "Already on first selectable item"); -+ "已經在第一個可選擇的項目上"); + q_status_message1(SM_ORDER, 0, 1, +- "Already on first item in %s", ++ "已經在%s中第一個可選擇的項目上", + STYLE_NAME(sparms)); } - break; -@@ -5083,7 +5083,7 @@ +@@ -5335,7 +5335,7 @@ break; case -1 : @@ -455,7 +460,7 @@ break; default : -@@ -5170,14 +5170,14 @@ +@@ -5434,8 +5434,8 @@ q_status_message(SM_ORDER, 0, 3, tmp_20k_buf); else q_status_message2(SM_ORDER, 0, 3, @@ -464,6 +469,10 @@ + "%s在畫面上第 %s 行找到", + result ? "重頭搜尋。" : "", int2string(whereis_pos.row)); + + if(key){ +@@ -5452,9 +5452,9 @@ + } } else if(found_on == -1) - cmd_cancelled("Search"); @@ -471,19 +480,19 @@ else - q_status_message(SM_ORDER | SM_DING, 0, 3, "Word not found"); + q_status_message(SM_ORDER | SM_DING, 0, 3, "找不到該字"); + } break; +@@ -5548,7 +5548,7 @@ + break; -@@ -5257,7 +5257,7 @@ - break; - - case -1 : -- cmd_cancelled("View"); -+ cmd_cancelled("檢視"); - break; + case -1 : +- cmd_cancelled("View"); ++ cmd_cancelled("檢視"); + break; - default : -@@ -5522,13 +5522,13 @@ + default : +@@ -5836,13 +5836,13 @@ int rc, flags; static char search_string[MAX_SEARCH+1] = { '\0' }; static ESCKEY_S word_search_key[] = { { 0, 0, "", "" }, @@ -500,7 +509,7 @@ help = NO_HELP; nsearch_string[0] = '\0'; -@@ -5543,13 +5543,13 @@ +@@ -5857,13 +5857,13 @@ continue; } else if(rc == 10){ @@ -513,28 +522,39 @@ else if(rc == 11){ - strcpy(report, "Searched to Last Line."); + strcpy(report, "搜尋至最後一行。"); - cursor_pos->row = max(get_scroll_text_lines() - 1, 0); + cursor_pos->row = max(scroll_text_lines() - 1, 0); cursor_pos->col = 0; return(cursor_pos->row); -@@ -6411,10 +6411,10 @@ - if(*msg_p[0]) - for(i = 0; i < msg_q; i++) - q_status_message2(SM_ORDER, 3, 4, -- "%s Result: %s", title, msg_p[i]); -+ "%s 結果:%s", title, msg_p[i]); - else - q_status_message2(SM_ORDER, 0, 4, "%s%s", title, -- alt_msg ? alt_msg : " command completed"); -+ alt_msg ? alt_msg : " 命令完成"); - } - else{ - SCROLL_S sargs; -@@ -6425,7 +6425,7 @@ +@@ -6808,12 +6808,12 @@ + if(*msg_p[0]) + for(i = 0; i < msg_q; i++) + q_status_message2(SM_ORDER, 3, 4, +- "%s Result: %s", title, msg_p[i]); ++ "%s 結果:%s", title, msg_p[i]); + else + q_status_message2(SM_ORDER, 0, 4, "%s%s", title, + alt_msg + ? alt_msg +- : " command completed with no output"); ++ : " 命令已完成(沒有輸出)"); + + fclose(f); + f = NULL; +@@ -6826,7 +6826,7 @@ + q_status_message2(SM_ORDER, 0, 4, "%s%s", title, + alt_msg + ? alt_msg +- : " command completed with no output"); ++ : " 命令已完成(沒有輸出)"); + fclose(f); + f = NULL; + } +@@ -6841,7 +6841,7 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = f; sargs.text.src = FileStar; -- sargs.text.desc = "help text"; -+ sargs.text.desc = "輔助說明文字"; +- sargs.text.desc = "output"; ++ sargs.text.desc = "輸出"; sargs.bar.title = title; sargs.bar.style = TextPercent; sargs.help.text = h_simple_text_view; diff --git a/chinese/pine4/files/patch-bf b/chinese/pine4/files/patch-bf index 032fbc6ade9f..685b3775f925 100644 --- a/chinese/pine4/files/patch-bf +++ b/chinese/pine4/files/patch-bf @@ -1,6 +1,6 @@ ---- pine/other.c.orig Thu Jul 16 09:09:27 1998 -+++ pine/other.c Tue Aug 4 12:42:20 1998 -@@ -51,16 +51,16 @@ +--- pine/other.c.orig Tue Feb 2 07:32:44 1999 ++++ pine/other.c Wed Feb 24 02:19:21 1999 +@@ -51,18 +51,18 @@ #define BODY_LINES(X) ((X)->ttyo->screen_rows -HEADER_ROWS(X)-FOOTER_ROWS(X)) @@ -22,9 +22,48 @@ -static char *fixed_val = "Value is Fixed"; +static char *fixed_val = "設定值已固定"; - typedef struct proto_conf_line { - short type, /* type of line treatment */ -@@ -311,9 +311,9 @@ +-#define ADD_FIRST_ROLE "Use Add to add a role" ++#define ADD_FIRST_ROLE "以 \"新增角色\" 來增加一名角色" + + typedef struct conf_line { + char *varname, /* alloc'd var name string */ +@@ -271,16 +271,14 @@ + #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); + + 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 + } +@@ -292,12 +290,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); + +- 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 + } +@@ -339,9 +337,9 @@ char prompt[50]; sprintf(prompt, @@ -37,7 +76,7 @@ flags = OE_PASSWD; rc = optionally_enter(pw, -FOOTER_ROWS(ps), 0, 30, -@@ -322,7 +322,7 @@ +@@ -350,7 +348,7 @@ if(rc == 3) help = help == NO_HELP ? h_kb_lock : NO_HELP; else if(rc == 1 || pw[0] == '\0'){ @@ -46,7 +85,7 @@ return(-1); } else if(rc != 4) -@@ -333,14 +333,14 @@ +@@ -361,14 +359,14 @@ strcpy(inpasswd, pw); else if(strcmp(inpasswd, pw)){ q_status_message(SM_ORDER, 0, 2, @@ -64,7 +103,7 @@ return(-1); } -@@ -354,7 +354,7 @@ +@@ -382,7 +380,7 @@ while(strcmp(inpasswd, passwd)){ if(passwd[0]) q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -73,7 +112,7 @@ help = NO_HELP; while(1){ -@@ -362,7 +362,7 @@ +@@ -390,7 +388,7 @@ flags = OE_PASSWD | OE_DISALLOW_CANCEL; rc = optionally_enter(passwd, -FOOTER_ROWS(ps), 0, 30, @@ -82,7 +121,7 @@ help, &flags); if(rc == 3) { help = help == NO_HELP ? h_oe_keylock : NO_HELP; -@@ -377,7 +377,7 @@ +@@ -405,7 +403,7 @@ if(old_suspend) F_TURN_ON(F_CAN_SUSPEND, ps_global); @@ -91,70 +130,61 @@ return(0); } -@@ -412,7 +412,7 @@ - PICO pbuf; +@@ -443,7 +441,7 @@ + struct variable *vars = ps_global->vars; - if(!signature_path(sigfile, sig_path, MAXPATH)){ -- q_status_message(SM_ORDER, 3, 4, "No signature file defined."); -+ q_status_message(SM_ORDER, 3, 4, "尚未定義簽名檔。"); - return; - } + if(!signature_path(sigfile, sig_path, MAXPATH)) +- return(cpystr("No signature file defined.")); ++ return(cpystr("尚未定義簽名檔。")); -@@ -442,7 +442,7 @@ - pbuf.browse_help = h_composer_browse; - pbuf.attach_help = h_composer_ctrl_j; + memset(&pbuf, 0, sizeof(PICO)); -- pbuf.pine_anchor = set_titlebar("SIGNATURE EDITOR", -+ pbuf.pine_anchor = set_titlebar("簽名檔編輯器", - ps_global->mail_stream, - ps_global->context_current, - ps_global->cur_folder, -@@ -486,7 +486,7 @@ +@@ -519,7 +517,7 @@ + * Now alloc and init the text to pass pico */ if(!(msgso = so_get(PicoText, NULL, EDIT_ACCESS))){ - q_status_message(SM_ORDER | SM_DING, 3, 4, -- "Error allocating space for signature file"); -+ "配置簽名檔空間時發生錯誤"); +- ret = cpystr("Error allocating space for file"); ++ ret = cpystr("配置檔案空間時發生錯誤"); dprint(1, (debugfile, "Can't alloc space for signature_edit")); - return; + return(ret); } -@@ -496,7 +496,7 @@ - if(can_access(sig_path, READ_ACCESS) == 0 +@@ -530,7 +528,7 @@ && !(tmpso = so_get(FileStar, sig_path, READ_ACCESS))){ char *problem = error_description(errno); -- q_status_message2(SM_ORDER | SM_DING, 3, 3, "Error editing %s: %s", -+ q_status_message2(SM_ORDER | SM_DING, 3, 3, "編輯 %s 時發生錯誤:%s", - sig_path, problem ? problem : "<NULL>"); - dprint(1, (debugfile, "signature_edit: can't open %s: %s", sig_path, - problem ? problem : "<NULL>")); -@@ -508,7 +508,7 @@ + +- sprintf(errbuf, "Error editing \"%s\": %s", ++ sprintf(errbuf, "編輯 %s 時發生錯誤:%s", + sig_path, problem ? problem : "<NULL>"); + ret = cpystr(errbuf); + +@@ -543,7 +541,7 @@ + gf_set_so_writec(&pc, msgso); gf_filter_init(); /* no filters needed */ if(errstr = gf_pipe(gc, pc)){ - q_status_message1(SM_ORDER | SM_DING, 3, 5, -- "Error reading signature \"%s\"", errstr); -+ "編輯簽名檔時發生錯誤 \"%s\"", errstr); +- sprintf(errbuf, "Error reading file: \"%s\"", errstr); ++ sprintf(errbuf, "編輯簽名檔時發生錯誤 \"%s\"", errstr); + ret = cpystr(errbuf); } - gf_clear_so_readc(tmpso); -@@ -547,7 +547,7 @@ +@@ -582,7 +580,7 @@ + gf_set_so_writec(&pc, tmpso); /* write sig file */ gf_filter_init(); /* no filters needed */ if(errstr = gf_pipe(gc, pc)){ - q_status_message1(SM_ORDER | SM_DING, 3, 5, -- "Error writing signature \"%s\"", -+ "寫入簽名檔時發生錯誤 \"%s\"", +- sprintf(errbuf, "Error writing file: \"%s\"", ++ sprintf(errbuf, "寫入檔案時發生錯誤:\"%s\"", errstr); + ret = cpystr(errbuf); } - -@@ -557,7 +557,7 @@ +@@ -592,7 +590,7 @@ + so_give(&tmpso); } else{ - q_status_message1(SM_ORDER | SM_DING, 3, 3, -- "Error writing %s", sig_path); -+ "寫入 %s 時發生錯誤", sig_path); +- sprintf(errbuf, "Error writing \"%s\"", sig_path); ++ sprintf(errbuf, "寫入 %s 時發生錯誤", sig_path); + ret = cpystr(errbuf); dprint(1, (debugfile, "signature_edit: can't write %s", sig_path)); - } -@@ -581,8 +581,8 @@ +@@ -618,8 +616,8 @@ char *rstr = NULL; void (*redraw)() = ps_global->redrawer; static ESCKEY_S opts[] = { @@ -165,7 +195,7 @@ {-1, 0, NULL, NULL} }; -@@ -590,18 +590,18 @@ +@@ -627,18 +625,18 @@ fix_windsize(ps_global); while(1){ @@ -187,7 +217,7 @@ break; } } -@@ -616,24 +616,24 @@ +@@ -653,24 +651,24 @@ * * * * * * Start of Config Screen Support Code * * * * * */ @@ -219,7 +249,113 @@ PRYNTTXT_MENU, WHEREIS_MENU}; INST_KEY_MENU(config_text_keymenu, config_text_keys); -@@ -657,7 +657,7 @@ +@@ -679,13 +677,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, + +@@ -693,8 +691,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, +@@ -707,13 +705,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, + +@@ -721,7 +719,7 @@ + OTHER_MENU, + NULL_MENU, + NULL_MENU, +- {"T", "ToAddrBk", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE}, ++ {"T", "地址簿", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE}, + NULL_MENU, + NULL_MENU, + NULL_MENU, +@@ -735,13 +733,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, + +@@ -749,7 +747,7 @@ + OTHER_MENU, + NULL_MENU, + NULL_MENU, +- {"T", "ToFldrs", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE}, ++ {"T", "檔案列表", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE}, + NULL_MENU, + NULL_MENU, + NULL_MENU, +@@ -763,13 +761,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, + +@@ -777,7 +775,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, +@@ -806,7 +804,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, @@ -228,7 +364,7 @@ PREV_MENU, NEXT_MENU, PREVPAGE_MENU, -@@ -672,7 +672,7 @@ +@@ -821,7 +819,7 @@ {HELP_MENU, NULL_MENU, EXIT_SETUP_MENU, @@ -237,15 +373,7 @@ PREV_MENU, NEXT_MENU, PREVPAGE_MENU, -@@ -696,7 +696,6 @@ - || (F) == F_DISABLE_DFLT_IN_BUG_RPT \ - || (F) == F_DISABLE_ALARM \ - || (F) == F_ALLOW_CHANGING_FROM \ -- || (F) == F_TCAP_WINS \ - || (F) == F_QUELL_PARTIAL_FETCH \ - || (F) == F_AGG_SEQ_COPY) - -@@ -1377,14 +1376,14 @@ +@@ -1489,14 +1487,14 @@ {HELP_MENU, PRYNTTXT_MENU, EXIT_SETUP_MENU, @@ -264,7 +392,7 @@ WHEREIS_MENU}; INST_KEY_MENU(printer_edit_keymenu, printer_edit_keys); -@@ -1392,7 +1391,7 @@ +@@ -1504,7 +1502,7 @@ {HELP_MENU, PRYNTTXT_MENU, EXIT_SETUP_MENU, @@ -273,7 +401,7 @@ PREV_MENU, NEXT_MENU, PREVPAGE_MENU, -@@ -1425,7 +1424,7 @@ +@@ -1537,7 +1535,7 @@ char *saved_printer; OPT_SCREEN_S screen; @@ -282,7 +410,16 @@ return; saved_printer = cpystr(ps->VAR_PRINTER); -@@ -1794,7 +1793,7 @@ +@@ -1553,7 +1551,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); +@@ -1906,7 +1904,7 @@ vsave = save_config_vars(ps); switch(conf_scroll_screen(ps, &screen, start_line, @@ -291,7 +428,7 @@ case 0: break; -@@ -1835,8 +1834,8 @@ +@@ -1947,8 +1945,8 @@ fs_give((void **)def_printer_line); *def_printer_line = fs_get(36 + strlen(p) + 1); @@ -302,7 +439,7 @@ fs_give((void **)&nick); fs_give((void **)&cmd); -@@ -1846,7 +1845,7 @@ +@@ -1958,7 +1956,7 @@ static struct key flag_keys[] = {HELP_MENU, NULL_MENU, @@ -311,7 +448,7 @@ TOGGLE_MENU, PREV_MENU, NEXT_MENU, -@@ -2000,9 +1999,9 @@ +@@ -2112,9 +2110,9 @@ static struct key addr_select_keys[] = {HELP_MENU, @@ -323,11 +460,11 @@ PREV_MENU, NEXT_MENU, PREVPAGE_MENU, -@@ -2016,29 +2015,29 @@ +@@ -2128,29 +2126,29 @@ static struct key addr_select_with_goback_keys[] = {HELP_MENU, NULL_MENU, -- {"<", "AddbkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, +- {"<", "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}, @@ -345,7 +482,7 @@ static struct key addr_select_with_view_keys[] = {HELP_MENU, NULL_MENU, -- {"<", "AddbkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, +- {"<", "AddressBkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, - {">", "[View]", + {"<", "地址簿列表", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE}, + {">", "[檢視]", @@ -359,7 +496,25 @@ FWDEMAIL_MENU, SAVE_MENU, WHEREIS_MENU}; -@@ -2047,7 +2046,7 @@ +@@ -2159,14 +2157,14 @@ + static struct key addr_select_for_url_keys[] = + {HELP_MENU, + NULL_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}; +@@ -2175,7 +2173,7 @@ static struct key addr_select_exit_keys[] = {NULL_MENU, NULL_MENU, @@ -368,7 +523,7 @@ KS_EXITMODE}, NULL_MENU, NULL_MENU, -@@ -2063,7 +2062,7 @@ +@@ -2191,7 +2189,7 @@ static struct key addr_select_goback_keys[] = {NULL_MENU, NULL_MENU, @@ -377,7 +532,7 @@ KS_EXITMODE}, NULL_MENU, NULL_MENU, -@@ -2404,7 +2403,7 @@ +@@ -2546,7 +2544,7 @@ sprintf(ee+2, "%s, No Matches Returned", ldap_err2string(wp_err->ldap_errno)); else @@ -386,16 +541,16 @@ strcat(ee, " -- Choose Exit ]"); ctmpa->value = cpystr(ee); -@@ -2498,7 +2497,7 @@ +@@ -2644,7 +2642,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; -@@ -2561,15 +2560,15 @@ +@@ -2709,15 +2707,15 @@ static struct key direct_config_keys[] = {HELP_MENU, NULL_MENU, @@ -418,25 +573,16 @@ WHEREIS_MENU}; INST_KEY_MENU(dir_conf_km, direct_config_keys); -@@ -2655,7 +2654,7 @@ - */ - if(!ps->VAR_LDAP_SERVERS || !ps->VAR_LDAP_SERVERS[0] || - !ps->VAR_LDAP_SERVERS[0][0]){ -- if(!fixed_var(&ps->vars[V_LDAP_SERVERS], "modify", "directory list")){ -+ if(!fixed_var(&ps->vars[V_LDAP_SERVERS], "修改", "地址列表")){ - unsigned flags = 0; - - opt_screen = &screen; -@@ -2665,7 +2664,7 @@ - #endif /* notdef */ - +@@ -2789,7 +2787,7 @@ + &first_line); + (void)conf_scroll_screen(ps, &screen, first_line, - "SETUP DIRECTORY SERVERS", "servers ", 1); + "設定地址伺服器", "servers ", 1); ps->mangled_screen = 1; } -@@ -2685,20 +2684,20 @@ +@@ -2809,20 +2807,20 @@ case MC_DELETE : if(first_one) q_status_message(SM_ORDER|SM_DING, 0, 3, @@ -460,7 +606,7 @@ if(first_one) dir_config_add(ps, cl); else -@@ -2708,10 +2707,10 @@ +@@ -2832,10 +2830,10 @@ break; case MC_SHUFFLE : @@ -473,7 +619,7 @@ else dir_config_shuffle(ps, cl); } -@@ -2840,7 +2839,7 @@ +@@ -2965,7 +2963,7 @@ write_pinerc(ps); } else @@ -482,7 +628,7 @@ } free_ldap_server_info(&info); -@@ -2870,7 +2869,7 @@ +@@ -2995,7 +2993,7 @@ if(cnt < 2){ q_status_message(SM_ORDER, 0, 3, @@ -491,7 +637,7 @@ return; } -@@ -2881,12 +2880,12 @@ +@@ -3006,12 +3004,12 @@ opts[i].ch = 'u'; opts[i].rval = 'u'; opts[i].name = "U"; @@ -506,7 +652,7 @@ opts[i].ch = -1; deefault = 'u'; -@@ -2898,11 +2897,11 @@ +@@ -3023,11 +3021,11 @@ else if(current_num == cnt - 1) /* no down */ opts[1].ch = -2; @@ -521,7 +667,7 @@ help = (opts[0].ch == -2) ? h_dir_shuf_down : (opts[1].ch == -2) ? h_dir_shuf_up : h_dir_shuf; -@@ -2912,7 +2911,7 @@ +@@ -3037,7 +3035,7 @@ switch(rv){ case 'x': @@ -530,7 +676,7 @@ return; case 'u': -@@ -2950,7 +2949,7 @@ +@@ -3075,7 +3073,7 @@ free_list_array(&new_list); if(j){ q_status_message(SM_ORDER, 0, 3, @@ -539,7 +685,7 @@ set_current_val((*cl)->var, TRUE, FALSE); return; } -@@ -3002,10 +3001,10 @@ +@@ -3127,10 +3125,10 @@ info = break_up_ldap_server(raw_server); if(strcmp((*cl)->var->current_val.l[(*cl)->varmem], raw_server) == 0) @@ -552,7 +698,7 @@ else{ char tmp[900]; char *subtitle; -@@ -3740,7 +3739,7 @@ +@@ -3967,7 +3965,7 @@ } else q_status_message(SM_ORDER, 3, 3, @@ -561,7 +707,7 @@ } else{ int cnt, ans = 0; -@@ -3763,8 +3762,8 @@ +@@ -3990,11 +3988,11 @@ */ if(!(*cl)->var->user_val.l && cnt > 1){ static ESCKEY_S opts[] = { @@ -571,8 +717,12 @@ + {'r', 'r', "R", "移除一個"}, {-1, 0, NULL, NULL}}; ans = radio_buttons( - "Ignore all default directory servers or just remove this one ? ", -@@ -3870,7 +3869,7 @@ +- "Ignore all default directory servers or just remove this one ? ", ++ "忽略所有預設的目錄伺服器或僅移除這臺?", + -FOOTER_ROWS(ps), opts, 'i', 'x', + h_ab_del_dir_ignore, RB_NORM); + } +@@ -4100,7 +4098,7 @@ CONF_S *first_line = NULL; q_status_message(SM_ORDER, 0, 3, @@ -581,7 +731,7 @@ dir_init_display(ps, cl, servers, &ps->vars[V_LDAP_SERVERS], &first_line); *cl = first_line; -@@ -3910,7 +3909,7 @@ +@@ -4140,7 +4138,7 @@ } } else @@ -590,16 +740,25 @@ } if(rv == 1){ -@@ -4416,7 +4415,7 @@ - ps->mangled_screen = 1; - } - else -- q_status_message(SM_ORDER,0,3,"No help yet!"); -+ q_status_message(SM_ORDER,0,3,"輔助說明尚未存在!"); - - break; +@@ -4164,7 +4162,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; +@@ -4227,7 +4225,7 @@ + p->next = b; + } -@@ -4473,7 +4472,7 @@ +- (*ctmp)->help_title= "HELP FOR DIRECTORY SERVER CONFIGURATION"; ++ (*ctmp)->help_title= "目錄伺服器設定的輔助說明"; + (*ctmp)->value = serv; + (*ctmp)->var = var; + (*ctmp)->varmem = member; +@@ -4709,7 +4707,7 @@ if(i) config_scroll_up(i); else @@ -608,7 +767,7 @@ } break; -@@ -4497,7 +4496,7 @@ +@@ -4733,7 +4731,7 @@ } else q_status_message(SM_ORDER, 0, 1, @@ -617,7 +776,7 @@ break; -@@ -4540,7 +4539,7 @@ +@@ -4776,7 +4774,7 @@ if(ctmpa == screen->current){ q_status_message(SM_ORDER,0,1, @@ -626,7 +785,7 @@ goto no_down; } -@@ -4571,7 +4570,7 @@ +@@ -4807,7 +4805,7 @@ if(ctmpa){ if(ctmpa == screen->current) q_status_message(SM_ORDER, 0, 1, @@ -635,7 +794,7 @@ screen->current = ctmpa; } -@@ -4651,13 +4650,13 @@ +@@ -4965,13 +4963,13 @@ HelpType help; static ESCKEY_S ekey[] = { {0, 0, "", ""}, @@ -652,7 +811,7 @@ (last[0]) ? "[" : "", (last[0]) ? last : "", (last[0]) ? "]" : ""); -@@ -4779,7 +4778,7 @@ +@@ -5093,7 +5091,7 @@ result = "Searched to bottom"; } else @@ -661,7 +820,7 @@ if((found & FOUND_IT) && ctmpa){ strcpy(last, buf); -@@ -4798,7 +4797,7 @@ +@@ -5112,7 +5110,7 @@ screen->current = ctmpa; } @@ -670,22 +829,18 @@ } break; -@@ -4813,10 +4812,10 @@ - if(edit_config +@@ -5128,8 +5126,8 @@ && (ps_global->restricted || ps_global->readonly_pinerc)){ q_status_message1(SM_ORDER, 0, 3, -- "%s can't change options or settings", + "%s can't change options or settings", - ps_global->restricted ? "Pine demo" - : "Config file not changeable,"); -- if(cmd == MC_EXIT){ -+ "%s無法改變選項或設定", + ps_global->restricted ? "Pine 展示版" -+ : "設定檔無法改變,"); -+ if(cmd == MC_EXIT || cmd == KEY_LEFT){ ++ : "無法改變的設定檔,"); + if(cmd == MC_EXIT){ retval = 0; done++; - } -@@ -4831,9 +4830,9 @@ +@@ -5145,9 +5143,9 @@ &screen->current, flags)){ case -1: q_status_message2(SM_ORDER, 0, 2, @@ -697,7 +852,7 @@ break; case 0: -@@ -5370,11 +5369,11 @@ +@@ -5495,11 +5493,11 @@ ekey[1].ch = ctrl('P'); ekey[1].rval = ctrl('P'); ekey[1].name = "^P"; @@ -711,7 +866,7 @@ ekey[3].ch = KEY_DOWN; ekey[3].rval = ctrl('P'); ekey[3].name = ""; -@@ -5389,12 +5388,12 @@ +@@ -5514,12 +5512,12 @@ sval[0] = '\0'; switch(cmd){ case MC_ADD: /* add to list */ @@ -726,7 +881,7 @@ } else{ int maxwidth =min(80,ps->ttyo->screen_cols) - 15; -@@ -5418,7 +5417,7 @@ +@@ -5543,7 +5541,7 @@ } sprintf(prompt, @@ -735,7 +890,7 @@ } else if((*cl)->var->is_list && !(*cl)->var->user_val.l -@@ -5427,13 +5426,13 @@ +@@ -5552,13 +5550,13 @@ ekey[0].ch = 'r'; ekey[0].rval = 'r'; ekey[0].name = "R"; @@ -752,14 +907,14 @@ switch(radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'a', 'x', h_config_replace_add, RB_NORM)){ case 'a': -@@ -5447,25 +5446,25 @@ +@@ -5572,25 +5570,25 @@ } add_text: - sprintf(prompt, "Enter the %stext to be added : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想加入的%s字:", -+ flags&CF_NUMBER ? "數 " : "文"); ++ flags&CF_NUMBER ? "數" : "文"); break; case 'r': @@ -767,7 +922,7 @@ - sprintf(prompt, "Enter the %sreplacement text : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想取代的%s字:", -+ flags&CF_NUMBER ? "數 " : "文"); ++ flags&CF_NUMBER ? "數" : "文"); break; case 'x': @@ -781,11 +936,11 @@ - sprintf(prompt, "Enter the %stext to be added : ", - flags&CF_NUMBER ? "numeric " : ""); + sprintf(prompt, "輸入想加入的%s字:", -+ flags&CF_NUMBER ? "數 " : "文"); ++ flags&CF_NUMBER ? "數" : "文"); ps->mangled_footer = 1; -@@ -5482,7 +5481,7 @@ +@@ -5607,7 +5605,7 @@ ekey[0].ch = ctrl('W'); ekey[0].rval = 5; ekey[0].name = "^W"; @@ -794,7 +949,7 @@ ekey[1].ch = -1; } else if(!(flags&CF_NUMBER)) -@@ -5536,7 +5535,7 @@ +@@ -5660,7 +5658,7 @@ } else{ q_status_message1(SM_ORDER, 0, 3, @@ -803,7 +958,7 @@ rv = ps->mangled_body = 0; } -@@ -5544,7 +5543,7 @@ +@@ -5668,7 +5666,7 @@ } else{ q_status_message1(SM_ORDER, 0, 3, @@ -812,7 +967,7 @@ } } else{ -@@ -5552,7 +5551,7 @@ +@@ -5676,7 +5674,7 @@ && !(isdigit((unsigned char)sval[0]) || sval[0] == '-' || sval[0] == '+')){ q_status_message(SM_ORDER,3,3, @@ -821,7 +976,7 @@ i = 3; /* to keep loop going */ continue; } -@@ -5565,7 +5564,7 @@ +@@ -5689,7 +5687,7 @@ } } else if(i == 1){ @@ -830,18 +985,18 @@ } else if(i == 3){ help = help == NO_HELP ? h_config_add : NO_HELP; -@@ -5588,8 +5587,8 @@ +@@ -5712,8 +5710,8 @@ } sprintf(prompt, - "Enter text to insert %s \"%.*s\": ", - after ? "after" : "before", k, tmpval); + "輸入想要插在 \"%.*s\" %s的文字", -+ k, tmpval, after ? "之後" : "之前"); ++ after ? "之後" : "之前", k, tmpval); continue; } else if(i == ctrl('P')){ -@@ -5609,7 +5608,7 @@ +@@ -5733,7 +5731,7 @@ */ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, @@ -850,7 +1005,7 @@ repeat_key = -5; } } -@@ -5633,7 +5632,7 @@ +@@ -5757,7 +5755,7 @@ if(numval == hirange){ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, @@ -859,7 +1014,25 @@ repeat_key = -5; } } -@@ -5686,7 +5685,7 @@ +@@ -5782,7 +5780,7 @@ + && (*cl)->var->current_val.p){ + char pmt[40]; + +- sprintf(pmt, "Override default with %s", empty_val2); ++ sprintf(pmt, "以 %s 覆蓋預設值", empty_val2); + if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ + sval[0] = '\0'; + (*cl)->var->user_val.p = cpystr(sval); +@@ -5795,7 +5793,7 @@ + && (*cl)->var->current_val.l){ + char pmt[40]; + +- sprintf(pmt, "Override default with %s", empty_val2); ++ sprintf(pmt, "以 %s 覆蓋預設值", empty_val2); + if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ + char **ltmp; + +@@ -5810,7 +5808,7 @@ } else if(((*cl)->var->is_list && !(*cl)->var->user_val.l) || (!(*cl)->var->is_list && !(*cl)->var->user_val.p)){ @@ -868,7 +1041,7 @@ } else{ if((*cl)->var->is_fixed) -@@ -5702,7 +5701,8 @@ +@@ -5826,7 +5824,8 @@ : "<NULL VALUE>", (*cl)->var->name); else @@ -878,7 +1051,7 @@ (*cl)->var->is_list ? "item " : "", (*cl)->var->is_list ? int2string((*cl)->varmem + 1) -@@ -5710,8 +5710,7 @@ +@@ -5834,8 +5833,7 @@ ? (!*(*cl)->var->user_val.p) ? empty_val2 : (*cl)->var->user_val.p @@ -888,7 +1061,7 @@ ps->mangled_footer = 1; if(want_to(prompt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ -@@ -5726,7 +5725,7 @@ +@@ -5850,7 +5848,7 @@ } } else @@ -897,7 +1070,7 @@ } break; -@@ -5855,7 +5854,7 @@ +@@ -5978,7 +5976,7 @@ && !(isdigit((unsigned char)sval[0]) || sval[0] == '-' || sval[0] == '+')){ q_status_message(SM_ORDER,3,3, @@ -906,7 +1079,7 @@ continue; } -@@ -5869,7 +5868,7 @@ +@@ -5992,7 +5990,7 @@ } } else if(i == 1){ @@ -915,7 +1088,7 @@ } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; -@@ -5887,7 +5886,7 @@ +@@ -6010,7 +6008,7 @@ */ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, @@ -924,7 +1097,7 @@ repeat_key = -5; } } -@@ -5903,7 +5902,7 @@ +@@ -6026,7 +6024,7 @@ if(numval == hirange){ if(++repeat_key > 0){ q_status_message1(SM_ORDER,3,3, @@ -933,7 +1106,7 @@ repeat_key = -5; } } -@@ -5990,15 +5989,15 @@ +@@ -6113,15 +6111,15 @@ if(flags & CF_CHANGES){ switch(want_to(EXIT_PMT, 'y', 'x', h_config_undo, WT_FLUSH_IN)){ case 'y': @@ -952,7 +1125,7 @@ return(0); } } -@@ -6290,7 +6289,7 @@ +@@ -6413,7 +6411,7 @@ && want_to("Delete old unused personal option setting", 'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ fs_give((void **)&(*cl)->var->user_val.p); @@ -961,7 +1134,7 @@ rv = 1; } -@@ -6429,7 +6428,7 @@ +@@ -6552,7 +6550,7 @@ && want_to("Delete old unused personal option setting", 'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ fs_give((void **)&(*cl)->var->user_val.p); @@ -970,7 +1143,7 @@ rv = 1; } -@@ -6519,15 +6518,15 @@ +@@ -6642,15 +6640,15 @@ fs_give((void **)&q); } @@ -989,7 +1162,7 @@ retval = 1; } -@@ -6538,11 +6537,11 @@ +@@ -6661,11 +6659,11 @@ set_variable(V_PERSONAL_PRINT_CATEGORY, comatose(ps->printer_category), 0); q_status_message1(SM_ORDER,0,3, @@ -1003,7 +1176,7 @@ retval = 1; } -@@ -6557,11 +6556,11 @@ +@@ -6680,11 +6678,11 @@ set_variable(V_PERSONAL_PRINT_CATEGORY, comatose(ps->printer_category), 0); q_status_message1(SM_ORDER,0,3, @@ -1017,7 +1190,7 @@ retval = 1; } -@@ -6611,7 +6610,7 @@ +@@ -6734,23 +6732,23 @@ switch(cmd){ case MC_ADD: /* add to list */ sval[0] = '\0'; @@ -1025,8 +1198,28 @@ + if(!fixed_var((*cl)->var, "新增", NULL)){ if((*cl)->var->user_val.l && (*cl)->value){ - strcpy(prompt, "Enter printer name : "); -@@ -6643,17 +6642,17 @@ +- strcpy(prompt, "Enter printer name : "); ++ strcpy(prompt, "輸入印表機名稱:"); + } + else if(!(*cl)->var->user_val.l && (*cl)->var->current_val.l){ + /* 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)){ + case 'a': +@@ -6766,17 +6764,17 @@ ltmp[k + 1] = ltmp[k] = NULL; add_text: @@ -1047,7 +1240,7 @@ break; } -@@ -6661,7 +6660,7 @@ +@@ -6784,7 +6782,7 @@ break; } else @@ -1056,7 +1249,7 @@ ps->mangled_footer = 1; help = NO_HELP; -@@ -6673,7 +6672,7 @@ +@@ -6796,7 +6794,7 @@ ekey[0].ch = ctrl('W'); ekey[0].rval = 5; ekey[0].name = "^W"; @@ -1065,8 +1258,8 @@ ekey[1].ch = -1; } else -@@ -6690,7 +6689,7 @@ - removing_trailing_white_space(name); +@@ -6812,7 +6810,7 @@ + removing_leading_and_trailing_white_space(name); } else if(i == 1){ - q_status_message(SM_ORDER,0,3,"Add cancelled"); @@ -1074,21 +1267,21 @@ } else if(i == 3){ help = (help == NO_HELP) ? h_config_insert_after : NO_HELP; -@@ -6744,7 +6743,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; - } -@@ -6759,10 +6758,10 @@ +@@ -6830,7 +6828,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; +@@ -6880,10 +6878,10 @@ } else q_status_message1(SM_ORDER, 0, 3, - "Can't add %s to list", empty_val); -+ "無法新增 %s 至列表中", empty_val); ++ "無法將 %s 新增至列表中", empty_val); } else if(i == 1){ - q_status_message(SM_ORDER,0,3,"Add cancelled"); @@ -1096,14 +1289,7 @@ } else if(i == 3){ help = help == NO_HELP ? h_config_print_cmd : NO_HELP; -@@ -6800,19 +6799,19 @@ - } - } - else if(!(*cl)->var->user_val.l){ -- q_status_message(SM_ORDER, 0, 3, "No set value to delete"); -+ q_status_message(SM_ORDER, 0, 3, "沒有任何設定值遭刪除"); - } - else{ +@@ -6927,13 +6925,13 @@ if((*cl)->var->is_fixed){ parse_printer((*cl)->var->user_val.l[(*cl)->varmem], &nick, &p, NULL, NULL, NULL, NULL); @@ -1119,7 +1305,7 @@ int2string((*cl)->varmem + 1)); ps->mangled_footer = 1; -@@ -6822,7 +6821,7 @@ +@@ -6943,7 +6941,7 @@ config_del_list_item(cl, &newval); } else @@ -1128,7 +1314,7 @@ } break; -@@ -6833,7 +6832,7 @@ +@@ -6954,7 +6952,7 @@ && !strucmp(ps->VAR_PRINTER,(*cl)->var->current_val.l[(*cl)->varmem])) changing_selected = 1; @@ -1137,7 +1323,7 @@ break; else if(!(*cl)->var->user_val.l && (*cl)->var->current_val.l) goto replace_text; -@@ -6845,22 +6844,22 @@ +@@ -6966,22 +6964,22 @@ ekey[0].ch = 'n'; ekey[0].rval = 'n'; ekey[0].name = "N"; @@ -1165,7 +1351,7 @@ break; } else if(i == 'c'){ -@@ -6869,7 +6868,7 @@ +@@ -6990,7 +6988,7 @@ parse_printer((*cl)->var->user_val.l[(*cl)->varmem], NULL, &p, NULL, NULL, NULL, &all_but_cmd); @@ -1174,7 +1360,7 @@ strcpy(sval, p ? p : ""); fs_give((void **)&p); -@@ -6908,12 +6907,12 @@ +@@ -7028,12 +7026,12 @@ * Don't allow input of multiple entries at once. */ q_status_message(SM_ORDER,3,5, @@ -1189,7 +1375,7 @@ } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; -@@ -6932,7 +6931,7 @@ +@@ -7052,7 +7050,7 @@ parse_printer((*cl)->var->user_val.l[(*cl)->varmem], &p, NULL, NULL, NULL, &all_but_nick, NULL); @@ -1198,7 +1384,7 @@ strcpy(name, p ? p : ""); fs_give((void **)&p); -@@ -6962,7 +6961,7 @@ +@@ -7081,7 +7079,7 @@ newval = &(*cl)->value; } else if(i == 1){ @@ -1207,7 +1393,7 @@ } else if(i == 3){ help = help == NO_HELP ? h_config_change : NO_HELP; -@@ -6983,18 +6982,18 @@ +@@ -7102,18 +7100,18 @@ ekey[0].ch = 'i'; ekey[0].rval = 'i'; ekey[0].name = "I"; @@ -1230,7 +1416,7 @@ break; } else{ -@@ -7003,8 +7002,8 @@ +@@ -7122,8 +7120,8 @@ parse_printer((*cl)->var->user_val.l[(*cl)->varmem], &nick, &p, &init, &trailer, NULL, NULL); @@ -1241,7 +1427,7 @@ strcpy(sval, (j == 'i') ? init : trailer); tmp = string_to_cstring(sval); -@@ -7059,7 +7058,7 @@ +@@ -7177,7 +7175,7 @@ newval = &(*cl)->value; } else if(i == 1){ @@ -1250,7 +1436,7 @@ } else if(i == 3){ help=(help == NO_HELP)?h_config_print_init:NO_HELP; -@@ -7137,18 +7136,18 @@ +@@ -7255,18 +7253,18 @@ case MC_DELETE : if((*cl)->d.c.ct->use & CNTXT_INCMNG) @@ -1273,7 +1459,7 @@ context_select_edit(ps, cl); ps->mangled_screen = 1; } -@@ -7156,7 +7155,7 @@ +@@ -7274,7 +7272,7 @@ break; case MC_ADD : @@ -1282,7 +1468,7 @@ context_select_add(ps, cl); ps->mangled_screen = 1; } -@@ -7165,9 +7164,9 @@ +@@ -7283,9 +7281,9 @@ case MC_SHUFFLE : if((*cl)->d.c.ct->use & CNTXT_INCMNG) @@ -1294,7 +1480,7 @@ context_select_shuffle(ps, cl); break; -@@ -7234,7 +7233,7 @@ +@@ -7352,7 +7350,7 @@ struct key_menu *km; CONT_SCR_S *cs; @@ -1303,16 +1489,16 @@ /* create a corresponding new CONF_S */ new_ctxt = new_context(raw_ctxt, NULL); -@@ -7313,7 +7312,7 @@ +@@ -7416,7 +7414,7 @@ /* Tell the user it was a huge success... */ q_status_message(SM_ORDER, 0, 3, -- "New collection added! Use \"$\" to adjust order."); +- "New collection added. Use \"$\" to adjust order."); + "新的總集加入了!請用 \"$\" 調整順序。"); } } -@@ -7332,11 +7331,11 @@ +@@ -7435,11 +7433,11 @@ if(!((*cl)->var->user_val.l && (*cl)->var->user_val.l[0])){ q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -1326,14 +1512,14 @@ old_cl->value); if(want_to(tmp, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){ /* Remove from var list */ -@@ -7448,12 +7447,12 @@ +@@ -7551,12 +7549,12 @@ ps->mangled_body = 1; q_status_message(SM_ORDER, 0, 3, (old_cl == *cl) - ? "Last collection deleted. Using default." - : "Collection deleted"); + ? "最後一個總集已被刪除。使用預設值。" -+ : "褻陘w被刪除"); ++ : "總集已被刪除"); } else @@ -1342,7 +1528,7 @@ } -@@ -7475,7 +7474,7 @@ +@@ -7578,7 +7576,7 @@ if(p = strstr(tpath, "%s")) *p = '\0'; @@ -1351,7 +1537,7 @@ (*cl)->d.c.ct->server, tpath, (*cl)->d.c.ct->dir->view.user)){ -@@ -7545,7 +7544,7 @@ +@@ -7648,7 +7646,7 @@ set_current_val((*cl)->var, TRUE, FALSE); @@ -1360,7 +1546,24 @@ } } -@@ -7587,7 +7586,7 @@ +@@ -7670,14 +7668,14 @@ + ekey[n].ch = 'u'; + ekey[n].rval = 'u'; + ekey[n].name = "U"; +- ekey[n++].label = "Up"; ++ ekey[n++].label = "上"; + } + + if((*cl)->d.c.ct->next && !((*cl)->d.c.ct->use & CNTXT_INCMNG)){ + ekey[n].ch = 'd'; + ekey[n].rval = 'd'; + ekey[n].name = "D"; +- ekey[n++].label = "Down"; ++ ekey[n++].label = "下"; + } + + if(n){ +@@ -7690,7 +7688,7 @@ if((cmd = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, (n == 1) ? 'd' : 0, 'x', NO_HELP, RB_NORM)) == 'x'){ @@ -1369,7 +1572,7 @@ } else if((cmd == 'u' && (ctmp = context_select_prev(*cl))) || (cmd == 'd' && (ctmp = context_select_next(*cl)))){ -@@ -7686,7 +7685,7 @@ +@@ -7789,7 +7787,7 @@ } } else @@ -1378,7 +1581,7 @@ } -@@ -8148,7 +8147,7 @@ +@@ -8254,7 +8252,7 @@ if(cl->var->current_val.l){ int i, l, l2; @@ -1387,7 +1590,7 @@ for(i = 0; cl->var->current_val.l[i]; i++){ if(i) *p++ = ','; -@@ -8180,7 +8179,7 @@ +@@ -8286,7 +8284,7 @@ sprintf(tmp, cl->var->is_fixed ? "<%s%s%s%s>%*s" : "<%s%s%s%s>%*s", cl->var->is_fixed ? fixed_val : no_val, @@ -1396,7 +1599,7 @@ (cl->var->current_val.p) ? cl->var->current_val.p : "", (cl->var->current_val.p) ? "\"" : "", max(0, ps->ttyo->screen_cols - cl->valoffset - 13 -@@ -8322,7 +8321,7 @@ +@@ -8428,7 +8426,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, @@ -1405,16 +1608,16 @@ return; } } -@@ -8360,7 +8359,7 @@ - (void *)(F_ON(f->value,ps) ? 1 : 0)); - else if(f->value == F_ENABLE_INCOMING && F_ON(f->value, ps)){ - q_status_message(SM_ORDER | SM_DING, 3, 4, -- "Folder List changes will take effect your next pine session."); -+ "資料匣列表的改變將在下次啟動 pine 時生效。"); - } - else if(f->value == F_PRESERVE_START_STOP){ - /* toggle raw mode settings to make tty driver aware of new setting */ -@@ -8529,8 +8528,8 @@ +@@ -8477,7 +8475,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; + +@@ -8659,8 +8657,8 @@ { if(v && v->is_fixed){ q_status_message2(SM_ORDER, 3, 3, @@ -1425,7 +1628,7 @@ return(1); } -@@ -8829,7 +8828,7 @@ +@@ -8963,7 +8961,7 @@ && var->is_list && !var->user_val.l && var->current_val.l))) @@ -1434,25 +1637,25 @@ if(var == &ps->vars[V_USER_DOMAIN]){ char *p, *q; -@@ -8840,7 +8839,7 @@ +@@ -8974,7 +8972,7 @@ if(*(++p)){ if(!revert) q_status_message2(SM_ORDER, 3, 5, - "User-domain (%s) cannot contain \"@\"; using %s", -+ "User-domain (%s) 不可包括 \"@\"; 使用 %s", ++ "User-domain (%s) 不可包括 \"@\";使用 %s", ps->VAR_USER_DOMAIN, p); q = ps->VAR_USER_DOMAIN; while((*q++ = *p++) != '\0') -@@ -8849,7 +8848,7 @@ +@@ -8983,7 +8981,7 @@ else{ if(!revert) q_status_message1(SM_ORDER, 3, 5, - "User-domain (%s) cannot contain \"@\"; deleting", -+ "User-domain (%s) 不可包括 \"@\"; 刪除中", ++ "User-domain (%s) 不可包括 \"@\";刪除中", ps->VAR_USER_DOMAIN); fs_give((void **)&ps->USR_USER_DOMAIN); set_current_val(&ps->vars[V_USER_DOMAIN], TRUE, TRUE); -@@ -8909,7 +8908,7 @@ +@@ -9043,7 +9041,7 @@ else if(var == &ps->vars[V_INIT_CMD_LIST]){ if(!revert) q_status_message(SM_ASYNC, 0, 3, @@ -1461,7 +1664,7 @@ } else if(var == &ps->vars[V_VIEW_HEADERS]){ ps->view_all_except = 0; -@@ -8968,10 +8967,10 @@ +@@ -9115,10 +9113,10 @@ } else if(timeo == 0L && !revert){ q_status_message(SM_ORDER, 4, 6, @@ -1474,3 +1677,148 @@ } } #if defined(DOS) || defined(OS2) +@@ -9431,10 +9429,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, +@@ -9475,7 +9473,7 @@ + new_confline(&ctmp); + first_line = ctmp; + +- ctmp->value = cpystr("Default Role"); ++ ctmp->value = cpystr("預設角色"); + ctmp->d.r.selected = &sel_pat; + ctmp->d.r.pat = &local_pat; + ctmp->d.r.handle = pattern_h; +@@ -9493,7 +9491,7 @@ + menu_add_binding(ctmp->keymenu, ctrl('M'), MC_CHOICE); + } + else{ +- menu_init_binding(ctmp->keymenu, 'S', MC_CHOICE, "S", "[Select]", ++ menu_init_binding(ctmp->keymenu, 'S', MC_CHOICE, "S", "[選擇]", + DEFAULT_KEY); + menu_add_binding(ctmp->keymenu, ctrl('J'), MC_CHOICE); + menu_add_binding(ctmp->keymenu, ctrl('M'), MC_CHOICE); +@@ -9516,7 +9514,7 @@ + ctmp->valoffset = 4; + } + +- (void)conf_scroll_screen(ps, &screen, first_line, "SELECT ROLE", ++ (void)conf_scroll_screen(ps, &screen, first_line, "選擇角色", + "roles ", 0); + + if(sel_pat){ +@@ -9617,23 +9615,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", "PrevRole", {MC_PREVITEM, 1, {'p'}}, KS_NONE}, +- {"N", "NextRole", {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 Role", {MC_ADD,1,{'a'}}, KS_NONE}, +- {"D", "Del Role", {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, + NULL_MENU, +@@ -9889,7 +9887,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); + +@@ -9910,14 +9908,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 : +- rv = screen_exit_cmd(flags, "Role Configuration"); ++ rv = screen_exit_cmd(flags, "角色設定"); + break; + + case MC_ADDFILE : +@@ -10158,7 +10156,7 @@ + delete_a_role(cl); + } + else +- q_status_message(SM_ORDER, 0, 3, "Role not deleted"); ++ q_status_message(SM_ORDER, 0, 3, "角色未被刪除"); + + return(rv); + } +@@ -10724,7 +10722,7 @@ + free_patline(&cur_patline); + } + else +- q_status_message(SM_ORDER, 0, 3, "Role file not removed"); ++ q_status_message(SM_ORDER, 0, 3, "角色檔未被移除"); + + return(rv); + } +@@ -11084,7 +11082,7 @@ + + + struct variable *role_rule_ptr; +-#define ALT_ROLE "Alternate Role" ++#define ALT_ROLE "替代角色" + + CONF_S *inick_confs[5]; + #define INICK_INICK_CONF 0 +@@ -11216,7 +11214,7 @@ + def->action->role->inherit_nick && + def->action->role->inherit_nick[0]) + ? cpystr(def->action->role->inherit_nick) : NULL; +- inick_var.global_val.p = cpystr("Default Role"); ++ inick_var.global_val.p = cpystr("預設角色"); + + from_act_var.name = cpystr("Set From"); + from_act_var.is_used = 1; +@@ -12115,7 +12113,7 @@ + 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); + } + diff --git a/chinese/pine4/files/patch-bg b/chinese/pine4/files/patch-bg index ba61cd7c282a..3a9b70ef8792 100644 --- a/chinese/pine4/files/patch-bg +++ b/chinese/pine4/files/patch-bg @@ -1,6 +1,6 @@ ---- pine/pine.c.orig Wed Jul 22 06:02:36 1998 -+++ pine/pine.c Tue Aug 4 12:42:20 1998 -@@ -107,12 +107,12 @@ +--- pine/pine.c.orig Sat Jan 30 01:59:01 1999 ++++ pine/pine.c Tue Feb 23 15:50:13 1999 +@@ -114,12 +114,12 @@ OTHER_MENU, NULL_MENU, NULL_MENU, @@ -17,7 +17,7 @@ NULL_MENU, NULL_MENU, -@@ -122,10 +122,10 @@ +@@ -129,11 +129,11 @@ COMPOSE_MENU, LISTFLD_MENU, GOTO_MENU, @@ -25,14 +25,16 @@ - {"J","Journal",{MC_JOURNAL,1,{'j'}},KS_REVIEW}, - {"S","Setup",{MC_SETUP,1,{'s'}},KS_NONE}, - {"A","AddrBook",{MC_ADDRBOOK,1,{'a'}},KS_ADDRBOOK}, +- {"#","Role",{MC_ROLE,1,{'#'}},KS_NONE}, + {"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}, - NULL_MENU, ++ {"#","角色",{MC_ROLE,1,{'#'}},KS_NONE}, NULL_MENU}; INST_KEY_MENU(main_keymenu, main_keys); -@@ -511,7 +511,7 @@ + #define MAIN_HELP_KEY 0 +@@ -528,7 +528,7 @@ static struct key simple_file_keys[] = {HELP_MENU, NULL_MENU, @@ -41,7 +43,7 @@ NULL_MENU, NULL_MENU, NULL_MENU, -@@ -520,15 +520,15 @@ +@@ -537,15 +537,15 @@ PRYNTTXT_MENU, WHEREIS_MENU, FWDEMAIL_MENU, @@ -60,7 +62,7 @@ sargs.bar.style = FileTextPercent; sargs.keys.menu = &simple_file_keymenu; setbitmap(sargs.keys.bitmap); -@@ -709,7 +709,7 @@ +@@ -761,7 +761,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; @@ -69,7 +71,7 @@ {-1, 0, NULL, NULL}}; pine_state->mangled_footer = 1; -@@ -719,7 +719,7 @@ +@@ -771,7 +771,7 @@ rv = optionally_enter(int_mail, -FOOTER_ROWS(pine_state), 0, MAXPATH, @@ -78,7 +80,7 @@ /* ekey */ NULL, help, &flags); if(rv == 3){ help = (help == NO_HELP) ? h_sticky_inbox : NO_HELP; -@@ -731,7 +731,7 @@ +@@ -783,7 +783,7 @@ } if(rv == 1){ @@ -87,7 +89,7 @@ rv = 0; /* reset rv */ } else if(rv == 2){ -@@ -750,7 +750,7 @@ +@@ -802,7 +802,7 @@ removing_leading_white_space(int_mail); if((!pine_state->VAR_INBOX_PATH || strucmp(pine_state->VAR_INBOX_PATH, "inbox") == 0) @@ -96,7 +98,7 @@ 'y', 'n', NO_HELP, WT_NORM) == 'y'){ set_variable(V_INBOX_PATH, int_mail, 1); } -@@ -895,25 +895,25 @@ +@@ -949,25 +949,25 @@ *news_addition; int key_index; /* index into keymenu array for this cmd */ } mkeys[] = { @@ -130,7 +132,7 @@ NULL, MAIN_QUIT_KEY} }; -@@ -1206,7 +1206,7 @@ +@@ -1295,7 +1295,7 @@ pine_state->mangled_footer = 1; } else{ @@ -139,7 +141,7 @@ pine_state->mangled_screen = 1; } -@@ -1234,7 +1234,7 @@ +@@ -1323,7 +1323,7 @@ just_a_navigate_cmd++; } else @@ -148,7 +150,7 @@ break; -@@ -1250,14 +1250,14 @@ +@@ -1339,14 +1339,14 @@ just_a_navigate_cmd++; } else @@ -165,7 +167,7 @@ pine_state->mangled_screen = 1; break; -@@ -1486,7 +1486,7 @@ +@@ -1603,7 +1603,7 @@ /* paint the titlebar if needed */ if(ps->mangled_header){ @@ -174,7 +176,7 @@ ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0); ps->mangled_header = 0; } -@@ -1651,13 +1651,13 @@ +@@ -1772,14 +1772,14 @@ { char prompt[80]; char letters[20]; @@ -185,6 +187,7 @@ - char *sigedit = "Signature"; - char *abooks = "AddressBooks"; - char *clctns = "collectionList"; +- char *roles = "Roles"; + char *printer = "印表機"; + char *passwd = "設定新密碼"; + char *config = "環境設定"; @@ -192,10 +195,11 @@ + char *sigedit = "編輯簽名檔"; + char *abooks = "地址簿"; + char *clctns = "總集列表"; ++ char *roles = "角色"; #ifdef ENABLE_LDAP char *dir = "Directory"; #endif -@@ -1735,13 +1735,13 @@ +@@ -1864,13 +1864,13 @@ } sprintf(prompt, @@ -212,7 +216,7 @@ s = 'e'; } -@@ -1854,14 +1854,14 @@ +@@ -1996,14 +1996,14 @@ HELP_MENU, NULL_MENU, {"E",NULL,{MC_EXIT,1,{'e',ctrl('M'),ctrl('J')}},KS_NONE}, @@ -229,7 +233,7 @@ NULL_MENU}; INST_KEY_MENU(nuov_keymenu, nuov_keys); #define NUOV_EXIT 2 -@@ -1950,13 +1950,13 @@ +@@ -2100,13 +2100,13 @@ memset(&sargs, 0, sizeof(SCROLL_S)); sargs.text.text = so_text(store); sargs.text.src = CharStar; @@ -244,9 +248,9 @@ - sargs.help.title = "MAIN PINE HELP"; + sargs.help.title = "PINE 的主要輔助說明"; sargs.resize_exit = 1; - sargs.force_h = 1; sargs.keys.menu = &km; -@@ -1967,11 +1967,11 @@ + km = nuov_keymenu; +@@ -2116,11 +2116,11 @@ setbitmap(sargs.keys.bitmap); if(ps->phone_home){ @@ -260,7 +264,7 @@ km.keys[NUOV_EXIT].bind.nch = 3; clrbitn(NUOV_VIEW, sargs.keys.bitmap); } -@@ -2029,7 +2029,7 @@ +@@ -2201,7 +2201,7 @@ break; case MC_RELNOTES : @@ -269,7 +273,7 @@ ps_global->mangled_screen = 1; break; -@@ -2148,7 +2148,7 @@ +@@ -2320,7 +2320,7 @@ dprint(1, (debugfile, "\n\n ---- QUIT SCREEN ----\n")); if(!pine_state->nr_mode && F_OFF(F_QUIT_WO_CONFIRM,pine_state) diff --git a/chinese/pine4/files/patch-bi b/chinese/pine4/files/patch-bi index 4c9b6fd6d5e7..094a4c68a179 100644 --- a/chinese/pine4/files/patch-bi +++ b/chinese/pine4/files/patch-bi @@ -1,6 +1,6 @@ ---- pine/reply.c.orig Wed Jul 15 08:40:00 1998 -+++ pine/reply.c Tue Aug 4 12:42:21 1998 -@@ -88,9 +88,9 @@ +--- pine/reply.c.orig Thu Jan 28 06:32:10 1999 ++++ pine/reply.c Tue Feb 23 15:55:36 1999 +@@ -107,9 +107,9 @@ /* * Little defs to keep the code a bit neater... */ @@ -10,19 +10,28 @@ +#define FRM_PMT "使用 \"Reply-To:\" 地址代替 \"From:\" 地址" +#define ALL_PMT "回覆給所有的收信者" +#define NEWS_PMT "回覆至新聞組群,回函給作者或兩者皆要?" + #define SIGDASHES "-- " - /* - * standard type of storage object used for body parts... -@@ -411,7 +411,7 @@ + +@@ -293,7 +293,7 @@ + else{ /* cancel reply */ + role = NULL; + close_patterns(&pattern_h); +- cmd_cancelled("Reply"); ++ cmd_cancelled("回覆"); + goto done_early; + } + +@@ -558,7 +558,7 @@ #endif /* partially formatted outgoing message */ - pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY", + pine_send(outgoing, &body, "編輯信件回函", - fcc.tptr, &reply, NULL, NULL, NULL, 0); + role, fcc.tptr, &reply, redraft_pos, NULL, NULL, 0); done: pine_free_body(&body); -@@ -485,7 +485,7 @@ +@@ -636,7 +636,7 @@ (ADDRESS *) NULL, env->from, 0); if(ret == 'x') { @@ -31,7 +40,7 @@ return(0); } -@@ -534,7 +534,7 @@ +@@ -685,7 +685,7 @@ || (*saved_cc || *saved_resent))){ *flags &= ~RSF_QUERY_REPLY_ALL; if((ret=want_to(ALL_PMT,'n','x',NO_HELP,WT_SEQ_SENSITIVE)) == 'x'){ @@ -40,7 +49,7 @@ return(0); } else if(ret == 'y') -@@ -1099,8 +1099,8 @@ +@@ -1406,8 +1406,8 @@ { int ret, edited = 0; static ESCKEY_S rtq_opts[] = { @@ -51,7 +60,7 @@ {-1, 0, NULL, NULL}, /* may be overridden below */ {-1, 0, NULL, NULL} }; -@@ -1110,19 +1110,18 @@ +@@ -1417,19 +1417,18 @@ return(1); while(1){ @@ -77,7 +86,7 @@ } else rtq_opts[2].ch = -1; -@@ -1133,7 +1132,7 @@ +@@ -1440,7 +1439,7 @@ rtq_opts, edited ? 'y' : 'n', 'x', NO_HELP, RB_SEQ_SENSITIVE)){ case 'x': @@ -86,7 +95,7 @@ return(-1); case 'r': -@@ -1152,7 +1151,7 @@ +@@ -1459,7 +1458,7 @@ switch(optionally_enter(buf, ps->ttyo->screen_rows > 4 ? -FOOTER_ROWS(ps_global) : -1, @@ -95,7 +104,7 @@ NULL, NO_HELP, &flags)){ case 0: /* entry successful, continue */ if(flags & OE_USER_MODIFIED){ -@@ -1165,7 +1164,7 @@ +@@ -1472,7 +1471,7 @@ break; case 1: @@ -104,7 +113,7 @@ case -1: return(-1); -@@ -1518,9 +1517,9 @@ +@@ -2476,9 +2475,9 @@ ENVELOPE *env, *outgoing; { int ret = 1; @@ -117,7 +126,7 @@ {-1, 0, NULL, NULL} }; if(env->newsgroups && *env->newsgroups && !reply_poster_followup(env)) -@@ -1544,7 +1543,7 @@ +@@ -2502,7 +2501,7 @@ case 'x' : /* cancel or unknown response */ default : @@ -126,7 +135,7 @@ ret = 0; break; } -@@ -1552,7 +1551,7 @@ +@@ -2510,7 +2509,7 @@ if(ret > 1){ if(env->followup_to){ q_status_message(SM_ORDER, 2, 3, @@ -135,21 +144,39 @@ outgoing->newsgroups = cpystr(env->followup_to); } else if(!outgoing->newsgroups) -@@ -1710,7 +1709,7 @@ - * up... - */ +@@ -3148,7 +3147,7 @@ + : 0; + if(ret == 'x'){ -- q_status_message(SM_ORDER, 0, 3, "Forward message cancelled"); -+ q_status_message(SM_ORDER, 0, 3, "取消信件轉寄"); - goto clean_early; +- cmd_cancelled("Forward"); ++ cmd_cancelled("轉寄"); + so_give((STORE_S **)&msgtext); + goto clean; } - else if(ret == 'y'){ /* attach message[s]!!! */ -@@ -1842,7 +1841,7 @@ +@@ -3163,7 +3162,7 @@ + else{ /* cancel reply */ + role = NULL; + close_patterns(&pattern_h); +- cmd_cancelled("Forward"); ++ cmd_cancelled("轉寄"); + so_give((STORE_S **)&msgtext); + goto clean; + } +@@ -3360,7 +3359,7 @@ pine_simple_send(outgoing, &body, NULL, NULL, NULL, 1); else /* partially formatted outgoing message */ pine_send(outgoing, &body, - ps->nr_mode ? "SEND MESSAGE" : "FORWARD MESSAGE", + ps->nr_mode ? "送出信件" : "轉寄信件", - NULL, NULL, NULL, NULL, NULL, FALSE); + role, NULL, NULL, redraft_pos, NULL, NULL, FALSE); clean: +@@ -3383,7 +3382,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; + } + diff --git a/chinese/pine4/files/patch-bj b/chinese/pine4/files/patch-bj index db53194e49f4..3613e0d2dc6c 100644 --- a/chinese/pine4/files/patch-bj +++ b/chinese/pine4/files/patch-bj @@ -1,6 +1,6 @@ ---- pine/screen.c.orig Fri Jun 5 04:09:17 1998 -+++ pine/screen.c Tue Aug 4 12:42:21 1998 -@@ -433,7 +433,7 @@ +--- pine/screen.c.orig Wed Jan 13 10:51:51 1999 ++++ pine/screen.c Tue Feb 23 15:57:08 1999 +@@ -435,7 +435,7 @@ static struct key cancel_keys[] = @@ -9,7 +9,7 @@ {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE}, -@@ -1124,10 +1124,10 @@ +@@ -1128,10 +1128,10 @@ as.page_column = -1; is_context = strlen(as.context_name); sprintf(version, "PINE %s", pine_version); @@ -22,7 +22,7 @@ ss_len = strlen(ss_string); tit_len = strlen(as.title); /* fixed title field width */ -@@ -1144,17 +1144,17 @@ +@@ -1148,17 +1148,17 @@ /* * set location field's length and value based on requested style */ @@ -44,7 +44,7 @@ break; case MessageNumber : /* "<loc_label> xxx of xxx DEL" */ num_len = digit_count(mn_get_total(as.msgmap)); -@@ -1162,7 +1162,7 @@ +@@ -1166,7 +1166,7 @@ as.cur_mess_col = sc - (2 * num_len) - 10; as.del_column = as.cur_mess_col + num_len + digit_count(as.current_msg) + 5; @@ -53,7 +53,7 @@ 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)); -@@ -1174,7 +1174,7 @@ +@@ -1178,7 +1178,7 @@ as.percent_column = as.cur_mess_col + num_len + digit_count(as.current_msg) + 7; as.del_column = as.percent_column + 4; @@ -62,7 +62,7 @@ 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), -@@ -1185,7 +1185,7 @@ +@@ -1189,7 +1189,7 @@ case FileTextPercent : as.page_column = sc - (14 + 2*(num_len = digit_count(as.total_lines))); loc_len = 17 + 2*num_len; @@ -71,7 +71,7 @@ num_len, as.current_line, num_len, as.total_lines, percentage(as.current_line, as.total_lines, 1)); -@@ -1259,7 +1259,7 @@ +@@ -1264,7 +1264,7 @@ ss_string); } else{ @@ -80,25 +80,25 @@ if(fold_len + ss_len + 8 < avail) /* all of folder fit? */ sprintf(fold_tmp, fmt, as.folder_name, ss_string); else if((fold_len/2) + ss_len + 8 < avail) -@@ -1307,7 +1307,7 @@ - as.current_msg = mn_get_cur(as.msgmap); - - if(as.style == MsgTextPercent){ -- PutLine5(0, as.cur_mess_col, "%s of %s %s %s%s", -+ PutLine5(0, as.cur_mess_col, "%s 之 %s %s %s%s", - strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)), - strcpy(tmp_20k_buf + 1500, - comatose(mn_get_total(as.msgmap))), -@@ -1317,7 +1317,7 @@ - as.del_column += delta; - as.percent_column += delta; - } else { -- PutLine4(0, as.cur_mess_col, "%s of %s %s%s", -+ PutLine4(0, as.cur_mess_col, "%s 之 %s %s%s", - strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)), - strcpy(tmp_20k_buf + 1500, - comatose(mn_get_total(as.msgmap))), -@@ -1420,7 +1420,7 @@ +@@ -1313,7 +1313,7 @@ + StartInverse(); + if(delta) { + if(as.style == MsgTextPercent){ +- PutLine5(0, as.cur_mess_col, "%s of %s %s %s%s", ++ PutLine5(0, as.cur_mess_col, "%s 之 %s %s %s%s", + strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)), + strcpy(tmp_20k_buf + 1500, + comatose(mn_get_total(as.msgmap))), +@@ -1324,7 +1324,7 @@ + as.percent_column += delta; + } + else{ +- PutLine4(0, as.cur_mess_col, "%s of %s %s%s", ++ PutLine4(0, as.cur_mess_col, "%s 之 %s %s%s", + strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)), + strcpy(tmp_20k_buf + 1500, + comatose(mn_get_total(as.msgmap))), +@@ -1426,7 +1426,7 @@ as.current_line = new_line_number; diff --git a/chinese/pine4/files/patch-bk b/chinese/pine4/files/patch-bk index 7d218d7a14e9..d0cee7d33002 100644 --- a/chinese/pine4/files/patch-bk +++ b/chinese/pine4/files/patch-bk @@ -1,6 +1,6 @@ ---- pine/send.c.orig Wed Sep 16 03:12:31 1998 -+++ pine/send.c Tue Sep 22 11:56:19 1998 -@@ -211,18 +211,18 @@ +--- pine/send.c.orig Fri Feb 5 02:17:39 1999 ++++ pine/send.c Wed Feb 24 21:36:10 1999 +@@ -222,17 +222,17 @@ * Various useful strings */ #define INTRPT_PMT \ @@ -18,14 +18,22 @@ #define POST_PMT \ - "Posted message may go to thousands of readers. Really post" + "這篇文章可能被數以千計的讀者閱\讀,確定要刊登嗎" - #define INTR_DEL_FAIL \ - "Undelete messages to remain postponed, and then continue message" --#define INTR_DEL_PMT "Deleted messages will be removed from folder. Delete" -+#define INTR_DEL_PMT "刪除的信件將被移出檔案匣。確定刪除嗎" + #define INTR_DEL_PMT \ +- "Deleted messages will be removed from folder after use. Proceed" ++ "刪除的信件於 Pine 使用後將被移出檔案匣。確定刪除嗎" #if defined(DOS) || defined(OS2) #define POST_PERM_GRIPE \ -@@ -382,14 +382,14 @@ +@@ -277,7 +277,7 @@ + #define REDRAFT_PPND 0x01 + #define REDRAFT_DEL 0x02 + +-#define COMPOSE_MAIL_TITLE "COMPOSE MESSAGE" ++#define COMPOSE_MAIL_TITLE "編輯信件" + + /* + * Phone home hash controls +@@ -443,14 +443,14 @@ mail_close(stream); if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, @@ -42,7 +50,7 @@ file_path); if(stream) mail_close(stream); -@@ -469,14 +469,14 @@ +@@ -532,14 +532,14 @@ if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, @@ -59,7 +67,7 @@ if(stream) mail_close(stream); } -@@ -562,7 +562,7 @@ +@@ -627,7 +627,7 @@ if(ret == 'x'){ q_status_message(SM_ORDER, 0, 3, @@ -68,7 +76,7 @@ done++; } } -@@ -572,7 +572,7 @@ +@@ -637,7 +637,7 @@ } else{ q_status_message1(SM_ORDER | SM_DING, 3, 3, @@ -77,34 +85,59 @@ if(stream) mail_close(stream); } -@@ -646,7 +646,7 @@ - fs_give((void **)&tmp_fcc); - } +@@ -677,7 +677,7 @@ + else{ /* cancel reply */ + role = NULL; + close_patterns(&pattern_h); +- cmd_cancelled("Composition"); ++ cmd_cancelled("編輯文章"); + return; + } + +@@ -685,7 +685,7 @@ + } -- pine_send(outgoing, &body, "COMPOSE MESSAGE", fcc, -+ pine_send(outgoing, &body, "編輯信件", fcc, - reply, redraft_pos, lcc, custom, fcc_is_sticky); + if(role) +- q_status_message1(SM_ORDER, 3, 4, "Composing using role \"%s\"", ++ q_status_message1(SM_ORDER, 3, 4, "以 \"%s\" 的角色編輯", + role->nick); - if(reply){ -@@ -713,7 +713,7 @@ + /* +@@ -830,8 +830,8 @@ */ if(!stream->nmsgs){ - q_status_message(SM_ORDER | SM_DING, 3, 5, -- "Empty folder. No messages really postponed!"); -+ "空的信件匣。沒有信件真正被暫緩!"); - return(redraft_cleanup(stream, TRUE)); + q_status_message1(SM_ORDER | SM_DING, 3, 5, +- "Empty folder! No messages really %s!", +- (REDRAFT_PPND&flags) ? "postponed" : "interrupted"); ++ "空的信件匣。沒有信件真正被%s!", ++ (REDRAFT_PPND&flags) ? "暫緩" : "中斷"); + return(redraft_cleanup(stream, FALSE, flags)); } else if(stream == ps_global->mail_stream){ -@@ -749,7 +749,7 @@ +@@ -857,10 +857,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 %s, and then continue message", ++ "自%s復原刪除,並繼續該信件", + (REDRAFT_PPND&flags) +- ? "messages to remain postponed" +- : "form letters you want to keep"); ++ ? "繼續暫緩的信件中" ++ : "您想保留的信件中"); + continue; + } + +@@ -871,7 +871,7 @@ mn_give(&msgmap); if(rv){ - q_status_message(SM_ORDER, 0, 3, "Composition cancelled"); + q_status_message(SM_ORDER, 0, 3, "取消編輯"); - (void) redraft_cleanup(stream, FALSE); + (void) redraft_cleanup(stream, FALSE, flags); return(0); /* special case */ } -@@ -992,7 +992,7 @@ +@@ -1145,7 +1145,7 @@ if(b->type == TYPEMULTIPART){ if(strucmp(b->subtype, "mixed")){ q_status_message1(SM_INFO, 3, 4, @@ -113,16 +146,16 @@ b->subtype); fs_give((void **)&b->subtype); b->subtype = cpystr("mixed"); -@@ -1000,7 +1000,7 @@ +@@ -1153,7 +1153,7 @@ } else{ q_status_message2(SM_ORDER | SM_DING, 3, 4, - "Unable to resume type %s/%s message", + "無法繼續形態為 %s/%s 的信件", body_types[b->type], b->subtype); - return(redraft_cleanup(stream, TRUE)); + return(redraft_cleanup(stream, TRUE, flags)); } -@@ -1014,7 +1014,7 @@ +@@ -1167,7 +1167,7 @@ set_mime_type_by_grope(&part->body, NULL); if(part->body.type != TYPETEXT){ q_status_message2(SM_ORDER | SM_DING, 3, 4, @@ -130,17 +163,21 @@ + "無法繼續;第一部份非純文字:%s/%s", body_types[part->body.type], part->body.subtype); - return(redraft_cleanup(stream, TRUE)); -@@ -1075,7 +1075,7 @@ + return(redraft_cleanup(stream, TRUE, flags)); +@@ -1229,9 +1229,9 @@ if(stream == ps_global->mail_stream){ - q_status_message1(SM_ORDER, 3, 7, -- "No more postponed messages, returning to \"%s\"", -+ "沒有遭暫緩的信件了,回到 \"%s\"", + q_status_message2(SM_ORDER, 3, 7, +- "No more %s, returning to \"%s\"", +- (REDRAFT_PPND&flags) ? "postponed messages" +- : "form letters", ++ "沒有%s了,回到 \"%s\"", ++ (REDRAFT_PPND&flags) ? "遭暫緩的信件" ++ : " form letter ", ps_global->inbox_name); do_broach_folder(ps_global->inbox_name, ps_global->context_list); -@@ -1096,7 +1096,7 @@ +@@ -1252,7 +1252,7 @@ if(!(rv = mail_delete(stream, mbox))) q_status_message1(SM_ORDER|SM_DING, 3, 3, @@ -149,7 +186,7 @@ fs_give((void **) &mbox); success = rv > 0L; -@@ -1119,7 +1119,7 @@ +@@ -1275,7 +1275,7 @@ { if(background_posting(FALSE)){ q_status_message1(SM_ORDER, 0, 3, @@ -158,7 +195,7 @@ type); return(failure); } -@@ -1342,7 +1342,7 @@ +@@ -1498,7 +1498,7 @@ if(rc == 1 || (rc == 0 && !answer)) { q_status_message(SM_ORDER, 3, 4, @@ -167,7 +204,7 @@ return(0); } -@@ -1431,7 +1431,7 @@ +@@ -1587,7 +1587,7 @@ if(rc == 1 || (rc == 0 && !answer)) { q_status_message(SM_ORDER, 3, 4, @@ -176,7 +213,7 @@ return(0); } -@@ -1487,7 +1487,7 @@ +@@ -1643,7 +1643,7 @@ if(rc == 1 || (rc == 0 && answer[0] == '\0')) { q_status_message(SM_ORDER, 3, 4, @@ -185,57 +222,57 @@ return(0); } -@@ -1514,31 +1514,31 @@ +@@ -1670,31 +1670,31 @@ */ static struct headerentry he_template[]={ {"From : ", "From", h_composer_from, 10, 0, NULL, -- build_address, NULL, NULL, addr_book_compose, "To AddrBk", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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", -+ news_build, NULL, NULL, news_group_selector, "新聞組群列表", +- 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, folders_for_fcc, "資料匣列表", +- 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", -+ build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"地址簿", +- 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, 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, -@@ -1573,7 +1573,7 @@ + valid_subject, NULL, NULL, NULL, NULL, NULL, +@@ -1729,7 +1729,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", -+ build_address, NULL, NULL, addr_book_compose, "地址簿", +- 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, -@@ -1856,7 +1856,7 @@ +@@ -2012,7 +2012,7 @@ default: q_status_message1(SM_ORDER,3,3, @@ -244,7 +281,7 @@ break; } } -@@ -1866,7 +1866,7 @@ +@@ -2022,7 +2022,7 @@ ekey[0].ch = ctrl('T'); ekey[0].rval = 2; ekey[0].name = "^T"; @@ -253,7 +290,7 @@ ekey[1].ch = -1; /*---------------------------------------------------------------------- -@@ -1977,12 +1977,12 @@ +@@ -2133,12 +2133,12 @@ opts[i].ch = 'y'; opts[i].rval = 'y'; opts[i].name = "Y"; @@ -268,7 +305,7 @@ verbose_requested = 0; if(F_ON(F_VERBOSE_POST, ps_global)){ -@@ -2029,7 +2029,7 @@ +@@ -2185,7 +2185,7 @@ dsn_show = (dsn_requested & DSN_SHOW); sprintf(tmp_20k_buf, "%s%s%s%s%s%sto \"%s\" ? ", @@ -277,16 +314,16 @@ (verbose_requested || dsn_show) ? "(" : "", (verbose_requested) -@@ -2166,7 +2166,7 @@ +@@ -2323,7 +2323,7 @@ if(!(outgoing->to || outgoing->cc || outgoing->bcc - || local_so)){ + || lmc.so)){ q_status_message(SM_ORDER, 3, 5, - "No recipients specified!"); + "尚未指定收件人!"); continue; } -@@ -2191,7 +2191,7 @@ +@@ -2348,7 +2348,7 @@ } else if(result == 0){ q_status_message(SM_ORDER,3,5, @@ -295,7 +332,7 @@ retval = -1; dprint(1, (debugfile, "explicit fcc write failed!\n")); -@@ -2209,7 +2209,7 @@ +@@ -2366,7 +2366,7 @@ } } else{ @@ -304,7 +341,7 @@ retval = -1; } } -@@ -2237,7 +2237,7 @@ +@@ -2394,7 +2394,7 @@ break; case 1: @@ -313,7 +350,7 @@ done++; retval = -1; break; -@@ -2488,7 +2488,7 @@ +@@ -2656,7 +2656,7 @@ break; case 'x': /* ^C */ @@ -322,7 +359,7 @@ dprint(4, (debugfile, "=== send: cancelled\n")); pbuf = save_previous_pbuf; return; -@@ -2879,7 +2879,7 @@ +@@ -3065,7 +3065,7 @@ default: q_status_message1(SM_ORDER,3,7, @@ -331,8 +368,8 @@ (void *)pf->type); break; } -@@ -2906,7 +2906,7 @@ - #endif +@@ -3092,7 +3092,7 @@ + !(role && role->from))){ if(pf->canedit || !he->rich_header) q_status_message(SM_ORDER, 3, 3, - "Not allowed to change header \"From\""); @@ -340,7 +377,7 @@ memset(he, 0, (size_t)sizeof(*he)); pf->he = NULL; -@@ -3254,7 +3254,7 @@ +@@ -3438,7 +3438,7 @@ ? "CANCEL" : "HUH?")); if((editor_result & COMP_CANCEL) && F_ON(F_QUELL_DEAD_LETTER, ps_global)){ @@ -349,7 +386,7 @@ break; } -@@ -3278,7 +3278,7 @@ +@@ -3462,7 +3462,7 @@ && (check_addresses(&header) == CA_BAD)){ /*--- Addresses didn't check out---*/ q_status_message(SM_ORDER, 7, 7, @@ -358,8 +395,8 @@ continue; } -@@ -3336,7 +3336,7 @@ - if(!so_puts(local_so, tmp_20k_buf)){ +@@ -3521,7 +3521,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 \"%s\": %s", @@ -367,7 +404,7 @@ folder, error_description(errno)); else dprint(1, (debugfile, "* * * CAN'T WRITE %s: %s\n", -@@ -3349,7 +3349,7 @@ +@@ -3534,7 +3534,7 @@ if(!ps_global->VAR_POSTPONED_FOLDER || !ps_global->VAR_POSTPONED_FOLDER[0]){ q_status_message(SM_ORDER | SM_DING, 3, 3, @@ -376,7 +413,7 @@ continue; } -@@ -3379,7 +3379,7 @@ +@@ -3564,7 +3564,7 @@ } else{ strcpy(folder, ps_global->VAR_POSTPONED_FOLDER); @@ -384,8 +421,8 @@ + strcpy(label, "暫緩信件"); } - local_so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL); -@@ -3521,10 +3521,10 @@ + lmc.so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL); +@@ -3706,10 +3706,10 @@ && ps_global->VAR_FORM_FOLDER[0] && !strcmp(folder, ps_global->VAR_FORM_FOLDER)) q_status_message(SM_ORDER, 0, 3, @@ -398,7 +435,7 @@ break; /* postpone went OK, get out of here */ } -@@ -3534,15 +3534,15 @@ +@@ -3719,15 +3719,15 @@ if(fcc_result && folder) lc = last_cmpnt(folder); @@ -417,7 +454,7 @@ body_start = 1; continue; /* postpone failed, jump back in to composer */ } -@@ -3558,14 +3558,14 @@ +@@ -3743,7 +3743,7 @@ /* --- If posting, confirm with user ----*/ if(outgoing->newsgroups && *outgoing->newsgroups && want_to(POST_PMT, 'n', 'n', NO_HELP, WT_NORM) == 'n'){ @@ -426,17 +463,25 @@ dprint(4, (debugfile, "no post, continuing\n")); continue; } - - if(!(outgoing->to || outgoing->cc || outgoing->bcc || lcc_addr - || outgoing->newsgroups || (fcc && fcc[0]))){ -- q_status_message(SM_ORDER, 3, 4, "No recipients specified!"); -+ q_status_message(SM_ORDER, 3, 4, "尚未指定收件者!"); - dprint(4, (debugfile, "no recip, continuing\n")); - continue; - } -@@ -3607,8 +3607,8 @@ +@@ -3752,13 +3752,13 @@ + || 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; + } + else{ + q_status_message(SM_ORDER, 3, 4, +- "No recipients specified!"); ++ "尚未指定收件者!"); + dprint(4, (debugfile, "no recip, continuing\n")); + continue; + } +@@ -3802,8 +3802,8 @@ && !filter_message_text(sending_filter_requested, outgoing, - *body, &orig_so)){ + *body, &orig_so, &header)){ q_status_message1(SM_ORDER, 3, 3, - "Problem filtering! Nothing sent%s.", - fcc ? " or saved to fcc" : ""); @@ -445,7 +490,7 @@ continue; } -@@ -3699,7 +3699,7 @@ +@@ -3894,7 +3894,7 @@ } else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){ q_status_message(SM_ORDER, 3, 5, @@ -454,7 +499,7 @@ dprint(1, (debugfile, "explicit fcc write failed!\n")); result |= P_FCC_LOSE; -@@ -3766,7 +3766,7 @@ +@@ -3961,7 +3961,7 @@ } else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){ q_status_message(SM_ORDER,3,5, @@ -463,7 +508,7 @@ dprint(1, (debugfile, "explicit fcc write failed!\n")); result |= P_FCC_LOSE; } -@@ -3852,8 +3852,8 @@ +@@ -4048,8 +4048,8 @@ postpone_prompt() { int ret = 1; @@ -474,7 +519,7 @@ {-1, 0, NULL, NULL} }; return(radio_buttons(PSTPN_FORM_PMT, -FOOTER_ROWS(ps_global), -@@ -4005,23 +4005,23 @@ +@@ -4201,23 +4201,23 @@ char *buf; int *goodorbad; { @@ -506,7 +551,7 @@ (result & P_FCC_WIN) ? "\"" : "", (result & P_FCC_WIN) ? fcc_name : "", (result & P_FCC_WIN) ? "\"" : ""); -@@ -4060,7 +4060,7 @@ +@@ -4256,7 +4256,7 @@ || (F_ON(F_COMPOSE_REJECTS_UNQUAL, ps_global) && a->host[0] == '@'))){ q_status_message2(SM_ORDER, 4, 7, @@ -515,7 +560,7 @@ a->mailbox, (a->host[0] == '.') ? a->host -@@ -4070,7 +4070,7 @@ +@@ -4266,7 +4266,7 @@ else if(ps_global->restricted && !address_is_us(*pf->addr, ps_global)){ q_status_message(SM_ORDER, 3, 3, @@ -524,7 +569,7 @@ return(CA_BAD); } else if(a->mailbox && strucmp(a->mailbox, "mailer-daemon") == 0 -@@ -4220,7 +4220,7 @@ +@@ -4417,7 +4417,7 @@ if(!(n > 0L && n <= mn_get_total(ps_global->msgmap) && (e = mail_fetchstructure(ps_global->mail_stream, mn_m2raw(ps_global->msgmap, n), &b)))){ @@ -533,7 +578,7 @@ flush_status_messages(0); return(0L); } -@@ -4235,7 +4235,7 @@ +@@ -4432,7 +4432,7 @@ /* actually write message text */ if(!format_message(mn_m2raw(ps_global->msgmap, n), e, b, FM_NEW_MESS | FM_DISPLAY, f)){ @@ -542,7 +587,7 @@ flush_status_messages(0); rv = 0L; } -@@ -4348,12 +4348,12 @@ +@@ -4545,12 +4545,12 @@ opts[i].ch = 'y'; opts[i].rval = 'y'; opts[i].name = "Y"; @@ -557,7 +602,7 @@ if(filters){ /* set global_filter_pointer to desired filter or NULL if none */ -@@ -4361,12 +4361,12 @@ +@@ -4558,12 +4558,12 @@ opts[i].ch = ctrl('P'); opts[i].rval = 10; opts[i].name = "^P"; @@ -572,36 +617,50 @@ if(F_ON(F_FIRST_SEND_FILTER_DFLT, ps_global)) filters = filters->next; -@@ -4436,23 +4436,23 @@ - p = NULL; +@@ -4647,11 +4647,11 @@ + lparen = 0; dsn_show = (dsn_requested & DSN_SHOW); -- sprintf(tmp_20k_buf, "Send message%s%s%s%s%s%s%s%s%s%s%s%s? ", -+ sprintf(tmp_20k_buf, "送出信件%s%s%s%s%s%s%s%s%s%s%s%s? ", - (filters || verbose_requested || background_requested - || dsn_show) - ? " (" : "", -- (filters && filters->filter) ? "filtered thru \"" : "", -+ (filters && filters->filter) ? "經由過濾器 \"" : "", - (filters) - ? (filters->filter - ? filters->filter -- : "unfiltered") -+ : "未經過濾") - : "", - (filters && filters->filter) ? "\"" : "", - (filters && (verbose_requested || background_requested)) - ? " " : "", - (verbose_requested || background_requested) - ? "in " : "", -- (verbose_requested) ? "verbose " : "", -- (background_requested) ? "background " : "", -+ (verbose_requested) ? "顯示細節 " : "", -+ (background_requested) ? "背景送出 " : "", - (verbose_requested || background_requested) - ? "mode" : "", - (dsn_show -@@ -4467,11 +4467,11 @@ +- 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(filters){ + if(!lparen){ +@@ -4663,12 +4663,12 @@ + *optp++ = ' '; + + 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){ +@@ -4682,10 +4682,10 @@ + + sstrcpy(&optp, "in "); + if(verbose_requested) +- sstrcpy(&optp, "verbose "); ++ sstrcpy(&optp, "顯示細節 "); + + if(background_requested) +- sstrcpy(&optp, "background "); ++ sstrcpy(&optp, "背景送出 "); + + sstrcpy(&optp, "mode"); + } +@@ -4727,11 +4727,11 @@ *p = ' '; if(verbose_label) @@ -613,9 +672,9 @@ - ? "Foreground" : "Background"; + ? "前景" : "背景"; - if(F_ON(F_DSN, ps_global)){ - if(dsn_requested & DSN_SHOW){ -@@ -4495,11 +4495,11 @@ + if(fcc_label) + opts[fcc_label].label = lmc.text_only ? "Fcc Attchmnts" +@@ -4763,11 +4763,11 @@ break; } else if(rv == 'n'){ /* Declined! */ @@ -628,8 +687,8 @@ + rstr = "取消送件"; break; } - else if(rv == 10) /* PREVIOUS filter */ -@@ -4681,7 +4681,7 @@ + else if(rv == 10){ /* PREVIOUS filter */ +@@ -4954,7 +4954,7 @@ if(body->type != TYPEOTHER){ rv = 1; q_status_message3(SM_ORDER, 0, 3, @@ -638,7 +697,7 @@ body_types[body->type], body->subtype ? body->subtype : rfc822_default_subtype(body->type)); } -@@ -4730,7 +4730,7 @@ +@@ -5003,7 +5003,7 @@ (void) close_system_pipe(&syspipe); if((l = name_file_size(fname)) < 0L){ q_status_message2(SM_ORDER | SM_DING, 3, 4, @@ -647,7 +706,7 @@ fnp = error_description(errno)); dprint(1, (debugfile, "!!! Upload cmd \"%s\" failed for \"%s\": %s\n", -@@ -4742,7 +4742,7 @@ +@@ -5015,7 +5015,7 @@ return(l >= 0); } else @@ -656,7 +715,7 @@ return(0); } -@@ -4795,7 +4795,7 @@ +@@ -5068,7 +5068,7 @@ else if(reply->flags == REPLY_MSGNO) return; @@ -665,16 +724,16 @@ if(!stream){ if(stream = mail_open(NULL, reply->mailbox, OP_SILENT)){ ourstream++; -@@ -4873,7 +4873,7 @@ +@@ -5164,7 +5164,7 @@ so_give(&tmpf_so); } else - errstr = "Can't create space for filter temporary file."; + errstr = "無法建立過濾器的暫存檔。"; } - - if(!errstr){ -@@ -4897,13 +4897,13 @@ + else if(include_hdrs){ + /* +@@ -5222,13 +5222,13 @@ so_give(&tmpf_so); } else @@ -691,7 +750,7 @@ } else errstr = gf_filter(cmd, key ? filter_session_key() : NULL, -@@ -4914,7 +4914,7 @@ +@@ -5242,7 +5242,7 @@ if(errstr){ int ch; @@ -700,7 +759,7 @@ fflush(stdout); while((ch = read_char(300)) != ctrl('M') && ch != NO_OP_IDLE) -@@ -5007,7 +5007,7 @@ +@@ -5338,7 +5338,7 @@ if(tmp_so) so_give(&tmp_so); @@ -709,7 +768,7 @@ errstr); dprint(1, (debugfile, "Filter FAILED: %s\n", errstr)); } -@@ -5092,11 +5092,11 @@ +@@ -5423,11 +5423,11 @@ loser = pine_simple_send(outgoing, &body, NULL, NULL, NULL, 0); @@ -723,7 +782,7 @@ mail_free_envelope(&outgoing); pine_free_body(&body); -@@ -5180,7 +5180,7 @@ +@@ -5511,7 +5511,7 @@ if(!pf){ q_status_message(SM_ORDER,3,3, @@ -732,7 +791,7 @@ return(0); } -@@ -5189,7 +5189,7 @@ +@@ -5520,7 +5520,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'; @@ -741,7 +800,7 @@ send_bytes_to_send ? sent_percent : NULL, 1); /* try posting via local "<mta> <-t>" if specified */ -@@ -5374,7 +5374,7 @@ +@@ -5705,7 +5705,7 @@ struct headerentry *last_he = NULL; sprintf(error_buf, @@ -750,7 +809,7 @@ (sending_stream && sending_stream->reply) ? ": ": ".", (sending_stream && sending_stream->reply) ? sending_stream->reply : ""); -@@ -5447,7 +5447,7 @@ +@@ -5778,7 +5778,7 @@ TIME_STAMP("smtp done", 1); } else if(!error_mess) @@ -759,16 +818,16 @@ ps_global->c_client_error); if(verbose_file){ -@@ -5455,7 +5455,7 @@ +@@ -5786,7 +5786,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, 1); + display_output_file(verbose_file, "Verbose SMTP Interaction", + NULL, DOF_BRIEF); TIME_STAMP("verbose end", 1); - } -@@ -5544,12 +5544,12 @@ +@@ -5876,12 +5876,12 @@ if(folder_index(fcc, *fcc_cntxt, FI_FOLDER) < 0){ if(ps_global->context_list->next) sprintf(tmp_20k_buf, @@ -783,7 +842,7 @@ strsquish(tmp_20k_buf + 500, fcc, 40)); if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){ -@@ -5586,7 +5586,7 @@ +@@ -5918,7 +5918,7 @@ ok++; } else{ @@ -792,7 +851,7 @@ strsquish(tmp_20k_buf + 500, fcc, 40)); if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){ /* -@@ -5620,8 +5620,8 @@ +@@ -5952,8 +5952,8 @@ if(ok == 0){ if(ps_global->mm_log_error){ @@ -803,7 +862,7 @@ l1 = strlen(s1); l2 = strlen(s2); -@@ -5639,10 +5639,10 @@ +@@ -5971,10 +5971,10 @@ } else @@ -816,7 +875,7 @@ q_status_message(SM_ORDER | SM_DING, 3, 3, errstr); } -@@ -5690,7 +5690,7 @@ +@@ -6022,7 +6022,7 @@ if(label && *label){ char msg_buf[80]; @@ -825,7 +884,7 @@ we_cancel = busy_alarm(1, msg_buf, NULL, 1); } else -@@ -5726,7 +5726,7 @@ +@@ -6058,7 +6058,7 @@ we_cancel = 0; q_status_message1(SM_ORDER | SM_DING, 3, 5, @@ -834,7 +893,7 @@ dprint(1, (debugfile, "ERROR appending %s in \"%s\"", fcc, cntxt ? cntxt->context : "NULL")); return(0); -@@ -6209,7 +6209,7 @@ +@@ -6548,7 +6548,7 @@ if((file_contents = (void *)so_get(FileStar, pa->filename, READ_ACCESS)) == NULL){ q_status_message2(SM_ORDER | SM_DING, 3, 4, @@ -843,7 +902,7 @@ error_description(errno), pa->filename); display_message('x'); continue; -@@ -6736,13 +6736,17 @@ +@@ -7083,13 +7083,17 @@ body->subtype = cpystr("octet-stream"); } @@ -868,9 +927,9 @@ } } -@@ -6912,6 +6916,9 @@ - value = rfc1522_encode(tmp_20k_buf, (unsigned char *) text, - ps_global->VAR_CHAR_SET); +@@ -7260,6 +7264,9 @@ + ps_global->VAR_CHAR_SET, + encode_whole_header(field, header)); + if (!strcmp(field, "Subject")) + value = text; @@ -878,7 +937,7 @@ if(value && value == text){ /* no encoding was done, have to fold */ int fold_by, len; char *actual_field; -@@ -7254,7 +7261,7 @@ +@@ -7713,7 +7720,7 @@ break; default: @@ -887,7 +946,7 @@ break; } } -@@ -7573,7 +7580,8 @@ +@@ -8034,7 +8041,8 @@ switch (body->encoding) { /* all else needs filtering */ case ENC8BIT: /* encode 8BIT into QUOTED-PRINTABLE */ @@ -897,7 +956,7 @@ break; case ENCBINARY: /* encode binary into BASE64 */ -@@ -7587,7 +7595,7 @@ +@@ -8048,7 +8056,7 @@ if(encode_error = gf_pipe(gc, l_putc)){ /* shove body part down pipe */ q_status_message1(SM_ORDER | SM_DING, 3, 4, @@ -906,7 +965,7 @@ display_message('x'); } -@@ -7656,7 +7664,7 @@ +@@ -8136,7 +8144,7 @@ && !(so_puts(so, "Content-Transfer-Encoding: ") && so_puts(so, body_encodings[(body->encoding==ENCBINARY) ? ENCBASE64 @@ -915,7 +974,7 @@ ? ENCQUOTEDPRINTABLE : (body->encoding <= ENCMAX) ? body->encoding -@@ -8279,7 +8287,7 @@ +@@ -8801,7 +8809,7 @@ || (forbid = pine_header_forbidden(name))){ if(forbid) q_status_message1(SM_ORDER, 3, 3, @@ -924,7 +983,7 @@ *t = save; continue; -@@ -8396,7 +8404,7 @@ +@@ -8947,7 +8955,7 @@ if(ps_global->post){ if(gripe) q_status_message(SM_ORDER|SM_DING, 3, 3, |