From 1e8a1769ec4ce8fae7a35cd52108fd785e846970 Mon Sep 17 00:00:00 2001
From: jack <jack@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Mon, 10 May 2004 23:58:11 +0000
Subject: Replaced edit.c xyz.c with i18n version and fixed the bugs in bbs.c

git-svn-id: http://opensvn.csie.org/pttbbs/branches/Jaky.i18n@1941 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 mbbsd/bbs.c  |   2 +-
 mbbsd/edit.c | 123 ++++++++++++++++++++++++++++-------------------------------
 mbbsd/xyz.c  |  56 +++++++++++++--------------
 3 files changed, 86 insertions(+), 95 deletions(-)

diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index f112a7c0..2f181e9b 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -551,7 +551,7 @@ do_general(int isbid)
          move(21,0);
          prints(SHM->i18nstr[cuser.language][310]);
          for(i=0; i<8 ; i++)
-         	strlcpy(ctype[i], SHM->i18nstr[cuser.language][297 + i], 4);
+         	strlcpy(ctype[i], SHM->i18nstr[cuser.language][297 + i], sizeof(ctype[0]));
          for(i=0; i<8 && bp->posttype[i*4]; i++)
             strncpy(ctype[i],bp->posttype+4*i,4);
          if(i==0) i=8;
diff --git a/mbbsd/edit.c b/mbbsd/edit.c
index d8f376fc..4ee6ca3a 100644
--- a/mbbsd/edit.c
+++ b/mbbsd/edit.c
@@ -63,7 +63,7 @@ static char     fp_bak[] = "bak";
 static void
 indigestion(int i)
 {
-    fprintf(stderr, "�Y������ %d\n", i);
+    fprintf(stderr, SHM->i18nstr[cuser.language][978], i);
 }
 
 /* Thor: ansi �y���ഫ  for color �s��Ҧ� */
@@ -121,7 +121,7 @@ n2ansi(int nx, textline_t * line)
 static void
 edit_msg()
 {
-    char    *edit_mode[2] = {"���N", "���J"};
+    char    *edit_mode[2] = {SHM->i18nstr[cuser.language][979], SHM->i18nstr[cuser.language][980]};
     register int    n = currpnt;
 
     if (my_ansimode)		/* Thor: �@ ansi �s�� */
@@ -129,9 +129,7 @@ edit_msg()
     n++;
     move(b_lines, 0);
     clrtoeol();
-    prints("\033[%sm �s��峹 \033[31;47m (Ctrl-Z)\033[30m���U���� "
-	   "\033[31;47m(^G)\033[30m���J�Ϥ�w \033[31m(^X,^Q)"
-	   "\033[30m���}��%s�x%c%c%c%c�� %3d:%3d  \033[m",
+    prints(SHM->i18nstr[cuser.language][981],
 	   "37;44",
 	   edit_mode[insert_character],
 	   my_ansimode ? 'A' : 'a', indent_mode ? 'I' : 'i',
@@ -527,8 +525,9 @@ char           *
 ask_tmpbuf(int y)
 {
     static char     fp_buf[10] = "buf.0";
-    static char     msg[] = "�п�ܼȦs�� (0-9)[0]: ";
-
+    char     msg[36];
+    
+    strlcpy(msg, SHM->i18nstr[cuser.language][982], sizeof(msg));
     msg[19] = fp_buf[4];
     do {
 	if (!getdata(y, 0, msg, fp_buf + 4, 4, DOECHO))
@@ -556,7 +555,7 @@ read_tmpbuf(int n)
 
     setuserfile(fp_tmpbuf, tmpf);
     if (n != 0 && n != 5 && more(fp_tmpbuf, NA) != -1)
-	getdata(b_lines - 1, 0, "�T�wŪ�J��(Y/N)?[Y]", ans, sizeof(ans), LCECHO);
+	getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][983], ans, sizeof(ans), LCECHO);
     if (*ans != 'n' && (fp = fopen(fp_tmpbuf, "r"))) {
 	load_file(fp);
 	while (curr_window_line >= b_lines) {
@@ -576,7 +575,7 @@ write_tmpbuf()
     setuserfile(fp_tmpbuf, ask_tmpbuf(3));
     if (dashf(fp_tmpbuf)) {
 	more(fp_tmpbuf, NA);
-	getdata(b_lines - 1, 0, "�Ȧs�ɤw����� (A)���[ (W)�мg (Q)�����H[A] ",
+	getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][984],
 		ans, sizeof(ans), LCECHO);
 
 	if (ans[0] == 'q')
@@ -599,7 +598,7 @@ erase_tmpbuf()
 
     setuserfile(fp_tmpbuf, ask_tmpbuf(3));
     if (more(fp_tmpbuf, NA) != -1)
-	getdata(b_lines - 1, 0, "�T�w�R����(Y/N)?[N]",
+	getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][985],
 		ans, sizeof(ans), LCECHO);
     if (*ans == 'y')
 	unlink(fp_tmpbuf);
@@ -635,8 +634,8 @@ restore_backup()
 
     setuserfile(bakfile, fp_bak);
     if (dashf(bakfile)) {
-	stand_title("�s�边�۰ʴ_��");
-	getdata(1, 0, "�z���@�g�峹�|�������A(S)�g�J�Ȧs�� (Q)��F�H[S] ",
+	stand_title(SHM->i18nstr[cuser.language][986]);
+	getdata(1, 0, SHM->i18nstr[cuser.language][987],
 		buf, 4, LCECHO);
 	if (buf[0] != 'q') {
 	    setuserfile(buf, ask_tmpbuf(3));
@@ -661,8 +660,8 @@ garbage_line(char *str)
     while (*str == ' ' || *str == '\t')
 	str++;
     if (qlevel >= 1) {
-	if (!strncmp(str, "�� ", 3) || !strncmp(str, "==>", 3) ||
-	    strstr(str, ") ����:\n"))
+	if (!strncmp(str, SHM->i18nstr[cuser.language][988], 3) || !strncmp(str, "==>", 3) ||
+	    strstr(str, SHM->i18nstr[cuser.language][989]))
 	    return 1;
     }
     return (*str == '\n');
@@ -674,7 +673,7 @@ do_quote()
     int             op;
     char            buf[256];
 
-    getdata(b_lines - 1, 0, "�аݭn�ޥέ���(Y/N/All/Repost)�H[Y] ",
+    getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][990],
 	    buf, 3, LCECHO);
     op = buf[0];
 
@@ -707,9 +706,9 @@ do_quote()
 		ptr = quote_user;
 
 	    indent_mode = 0;
-	    insert_string("�� �ޭz�m");
+	    insert_string(SHM->i18nstr[cuser.language][991]);
 	    insert_string(ptr);
-	    insert_string("�n���ʨ��G\n");
+	    insert_string(SHM->i18nstr[cuser.language][992]);
 
 	    if (op != 'a')	/* �h�� header */
 		while (fgets(buf, 256, inf) && buf[0] != '\n');
@@ -725,7 +724,7 @@ do_quote()
 		    insert_string(Ptt_prints(buf, NO_RELOAD));
 	    else {
 		if (curredit & EDIT_LIST)	/* �h�� mail list �� header */
-		    while (fgets(buf, 256, inf) && (!strncmp(buf, "�� ", 3)));
+		    while (fgets(buf, 256, inf) && (!strncmp(buf, SHM->i18nstr[cuser.language][993], 3)));
 		while (fgets(buf, 256, inf)) {
 		    if (!strcmp(buf, "--\n"))
 			break;
@@ -768,12 +767,11 @@ check_quote()
 
     if ((included_line >> 2) > post_line) {
 	move(4, 0);
-	outs("���g�峹���ި���ҶW�L 80%�A�бz���ǷL���ץ��G\n\n"
-	     "\033[1;33m1) �W�[�@�Ǥ峹 ��  2) �R�������n���ި�\033[m");
+	outs(SHM->i18nstr[cuser.language][994]);
 	{
 	    char            ans[4];
 
-	    getdata(12, 12, "(E)�~��s�� (W)�j��g�J�H[E] ",
+	    getdata(12, 12, SHM->i18nstr[cuser.language][995],
 		    ans, sizeof(ans), LCECHO);
 	    if (ans[0] == 'w')
 		return 0;
@@ -825,10 +823,9 @@ write_header(FILE * fp)
 	if (currbrdattr & BRD_ANONYMOUS) {
 	    int             defanony = (currbrdattr & BRD_DEFAULTANONYMOUS);
 	    if (defanony)
-		getdata(3, 0, "�п�J�A�Q�Ϊ�ID�A�]�i������[Enter]�A"
-		 "�άO��[r]�ίu�W�G", real_name, sizeof(real_name), DOECHO);
+		getdata(3, 0, SHM->i18nstr[cuser.language][996], real_name, sizeof(real_name), DOECHO);
 	    else
-		getdata(3, 0, "�п�J�A�Q�Ϊ�ID�A�]�i������[Enter]�ϥέ�ID�G",
+		getdata(3, 0, SHM->i18nstr[cuser.language][997],
 			real_name, sizeof(real_name), DOECHO);
 	    if (!real_name[0] && defanony) {
 		strlcpy(real_name, "Anonymous", sizeof(real_name));
@@ -861,7 +858,7 @@ write_header(FILE * fp)
 	    fprintf(fp, "%s %s (%s) %s %s\n", str_author1, postlog.author,
 		    (((!strcmp(real_name, "r") && defanony) ||
 		      (!real_name[0] && (!defanony))) ? cuser.username :
-		     "�q�q�ڬO�� ? ^o^"),
+		     SHM->i18nstr[cuser.language][998]),
 		    local_article ? str_post2 : str_post1, currboard);
 	} else {
 	    fprintf(fp, "%s %s (%s) %s %s\n", str_author1, cuser.userid,
@@ -876,7 +873,7 @@ write_header(FILE * fp)
 
     }
     save_title[72] = '\0';
-    fprintf(fp, "���D: %s\n�ɶ�: %s\n", save_title, ctime(&now));
+    fprintf(fp, SHM->i18nstr[cuser.language][999], save_title, ctime(&now));
 }
 
 void
@@ -887,12 +884,13 @@ addsignature(FILE * fp, int ifuseanony)
     char            buf[WRAPMARGIN + 1];
     char            fpath[STRLEN];
 
-    static char     msg[] = "�п��ñ�W�� (1-9, 0=���[ X=�H��)[X]: ";
+    static char     msg[64];
     char            ch;
 
+	strlcpy(msg, SHM->i18nstr[cuser.language][1000], sizeof(msg));
     if (!strcmp(cuser.userid, STR_GUEST)) {
-	fprintf(fp, "\n--\n�� �o�H�� :" BBSNAME "(" MYHOSTNAME
-		") \n�� From: %s\n", fromhost);
+	fprintf(fp, "%s" BBSNAME "(" MYHOSTNAME "%s%s\n", SHM->i18nstr[cuser.language][1001],
+		SHM->i18nstr[cuser.language][1002], fromhost);
 	return;
     }
     if (!ifuseanony) {
@@ -925,20 +923,20 @@ addsignature(FILE * fp, int ifuseanony)
 #ifdef HAVE_ORIGIN
 #ifdef HAVE_ANONYMOUS
     if (ifuseanony)
-	fprintf(fp, "\n--\n�� �o�H��: " BBSNAME "(" MYHOSTNAME
-		") \n�� From: %s\n", "�ʦW�ѨϪ��a");
+	fprintf(fp, "%s"BBSNAME"("MYHOSTNAME"%s%s\n", SHM->i18nstr[cuser.language][1003],
+		SHM->i18nstr[cuser.language][1004], SHM->i18nstr[cuser.language][1005]);
     else {
 	char            temp[33];
 
 	strncpy(temp, fromhost, 31);
 	temp[32] = '\0';
-	fprintf(fp, "\n--\n�� �o�H��: " BBSNAME "(" MYHOSTNAME
-		") \n�� From: %s\n", temp);
+	fprintf(fp, "%s"BBSNAME"("MYHOSTNAME"%s%s\n", SHM->i18nstr[cuser.language][1006],
+		SHM->i18nstr[cuser.language][1007], temp);
     }
 #else
     strncpy(temp, fromhost, 15);
-    fprintf(fp, "\n--\n�� �o�H��: " BBSNAME "(" MYHOSTNAME
-	    ") \n�� From: %s\n", temp);
+    fprintf(fp, "%s"BBSNAME"("MYHOSTNAME"%s%s\n", SHM->i18nstr[cuser.language][1008],
+	    SHM->i18nstr[cuser.language][1009], temp);
 #endif
 #endif
 }
@@ -952,20 +950,18 @@ write_file(char *fpath, int saveheader, int *islocal)
     char            ans[TTLEN], *msg;
     int             aborted = 0, line = 0, checksum[3], sum = 0, po = 1;
 
-    stand_title("�ɮ׳B�z");
+    stand_title(SHM->i18nstr[cuser.language][1010]);
     if (currstat == SMAIL)
-	msg = "[S]�x�s (A)��� (T)����D (E)�~�� (R/W/D)Ū�g�R�Ȧs�ɡH";
+	msg = SHM->i18nstr[cuser.language][1011];
     else if (local_article)
-	msg = "[L]�����H�� (S)�x�s (A)��� (T)����D (E)�~�� "
-	    "(R/W/D)Ū�g�R�Ȧs�ɡH";
+	msg = SHM->i18nstr[cuser.language][1012];
     else
-	msg = "[S]�x�s (L)�����H�� (A)��� (T)����D (E)�~�� "
-	    "(R/W/D)Ū�g�R�Ȧs�ɡH";
+	msg = SHM->i18nstr[cuser.language][1013];
     getdata(1, 0, msg, ans, 2, LCECHO);
 
     switch (ans[0]) {
     case 'a':
-	outs("�峹\033[1m �S�� \033[m�s�J");
+	outs(SHM->i18nstr[cuser.language][1014]);
 	aborted = -1;
 	break;
     case 'r':
@@ -980,16 +976,16 @@ write_file(char *fpath, int saveheader, int *islocal)
 	return KEEP_EDITING;
     case 't':
 	move(3, 0);
-	prints("�¼��D�G%s", save_title);
+	prints(SHM->i18nstr[cuser.language][1015], save_title);
 	strlcpy(ans, save_title, sizeof(ans));
-	if (getdata_buf(4, 0, "�s���D�G", ans, sizeof(ans), DOECHO))
+	if (getdata_buf(4, 0, SHM->i18nstr[cuser.language][1016], ans, sizeof(ans), DOECHO))
 	    strlcpy(save_title, ans, sizeof(save_title));
 	return KEEP_EDITING;
     case 's':
 	if (!HAS_PERM(PERM_LOGINOK)) {
 	    local_article = 1;
 	    move(2, 0);
-	    prints("�z�|���q�L�����T�{�A�u�� Local Save�C\n");
+	    prints(SHM->i18nstr[cuser.language][1017]);
 	    pressanykey();
 	} else
 	    local_article = 0;
@@ -1050,7 +1046,7 @@ write_file(char *fpath, int saveheader, int *islocal)
     }
     currline = NULL;
 
-    if (postrecord.times > MAX_CROSSNUM-1 && hbflcheck(currbid, currutmp->uid))
+    if (postrecord.times > MAX_CROSSNUM - 1)
 	anticrosspost();
 
     if (po && sum == 3) {
@@ -1069,7 +1065,7 @@ write_file(char *fpath, int saveheader, int *islocal)
 	    ) {
 	    ptime = localtime(&now);
 	    fprintf(fp,
-		    "�� �s��: %-15s �Ӧ�: %-20s (%02d/%02d %02d:%02d)\n",
+		    SHM->i18nstr[cuser.language][1018],
 		    cuser.userid, fromhost,
 		    ptime->tm_mon + 1, ptime->tm_mday, ptime->tm_hour, ptime->tm_min);
 	}
@@ -1155,7 +1151,7 @@ goto_line(int lino)
     char            buf[10];
 
     if (lino > 0 ||
-	(getdata(b_lines - 1, 0, "���ܲĴX��:", buf, sizeof(buf), DOECHO) &&
+	(getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][1019], buf, sizeof(buf), DOECHO) &&
 	 sscanf(buf, "%d", &lino) && lino > 0)) {
 	textline_t     *p;
 
@@ -1214,10 +1210,10 @@ search_str(int mode)
     char            ans[4] = "n";
 
     if (!mode) {
-	if (getdata_buf(b_lines - 1, 0, "[�j�M]����r:",
+	if (getdata_buf(b_lines - 1, 0, SHM->i18nstr[cuser.language][1020],
 			str, sizeof(str), DOECHO))
 	    if (*str) {
-		if (getdata(b_lines - 1, 0, "�Ϥ��j�p�g(Y/N/Q)? [N] ",
+		if (getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][1021],
 			    ans, sizeof(ans), LCECHO) && *ans == 'y')
 		    fptr = strstr;
 		else
@@ -1405,8 +1401,7 @@ block_del(int hide)
 	clrtoeol();
 	if (hide == 1)
 	    tmpfname[4] = 'q';
-	else if (!hide && !getdata(b_lines - 1, 0, "��϶����ܼȦs�� "
-				   "(0:Cut, 5:Copy, 6-9, q: Cancel)[0] ",
+	else if (!hide && !getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][1022],
 				   tmpfname + 4, 4, LCECHO))
 	    tmpfname[4] = '0';
 	if (tmpfname[4] < '0' || tmpfname[4] > '9')
@@ -1415,15 +1410,14 @@ block_del(int hide)
 	    setuserfile(fp_tmpbuf, tmpfname);
 	    if (tmpfname[4] != '5' && dashf(fp_tmpbuf)) {
 		more(fp_tmpbuf, NA);
-		getdata(b_lines - 1, 0, "�Ȧs�ɤw����� (A)���[ (W)�мg "
-			"(Q)�����H[W] ", ans, 2, LCECHO);
+		getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][1023], ans, 2, LCECHO);
 		if (*ans == 'q')
 		    tmpfname[4] = 'q';
 		else if (*ans != 'a')
 		    *ans = 'w';
 	    }
 	    if (tmpfname[4] != '5') {
-		getdata(b_lines - 1, 0, "�R���϶�(Y/N)?[N] ",
+		getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][1024],
 			ans + 2, 4, LCECHO);
 		if (ans[2] != 'y')
 		    ans[2] = 'n';
@@ -1781,7 +1775,7 @@ vedit(char *fpath, int saveheader, int *islocal)
 		line_dirty = 1;
 		break;
 	    case Ctrl('Q'):	/* Quit without saving */
-		ch = ask("���������x�s (Y/N)? [N]: ");
+		ch = ask(SHM->i18nstr[cuser.language][1025]);
 		if (ch == 'y' || ch == 'Y') {
 		    currutmp->mode = mode0;
 		    currutmp->destuid = destuid0;
@@ -1812,10 +1806,9 @@ vedit(char *fpath, int saveheader, int *islocal)
 		else {
 		    char            ans[4];
 		    move(b_lines - 2, 55);
-		    outs("\033[1;33;40mB\033[41mR\033[42mG\033[43mY\033[44mL"
-			 "\033[45mP\033[46mC\033[47mW\033[m");
+		    outs("\033[1;33;40mB\033[41mR\033[42mG\033[43mY\033[44mL\033[45mP\033[46mC\033[47mW\033[m");
 		    if (getdata(b_lines - 1, 0,
-			      "�п�J  �G��/�e��/�I��[���`�զr�©�][0wb]�G",
+			      SHM->i18nstr[cuser.language][1026],
 				ans, sizeof(ans), LCECHO)) {
 			char            t[] = "BRGYLPCW";
 			char            color[15];
@@ -1824,7 +1817,7 @@ vedit(char *fpath, int saveheader, int *islocal)
 
 			strcpy(color, "\033[");
 			if (isdigit(*apos)) {
-			    sprintf(color,"%s%c", color, *(apos++)); 
+				sprintf(color,"%s%c", color, *(apos++));
 			    if (*apos)
 				strcat(color, ";");
 			}
@@ -2020,7 +2013,7 @@ vedit(char *fpath, int saveheader, int *islocal)
 		{
 		    unsigned int    currstat0 = currstat;
 		    setutmpmode(EDITEXP);
-		    a_menu("�s�軲�U��", "etc/editexp",
+		    a_menu(SHM->i18nstr[cuser.language][1027], "etc/editexp",
 			   (HAS_PERM(PERM_SYSOP) ? SYSOP : NOBODY));
 		    currstat = currstat0;
 		}
@@ -2030,9 +2023,9 @@ vedit(char *fpath, int saveheader, int *islocal)
 
 			indent_mode = 0;
 			while (fgets(line, WRAPMARGIN + 2, fp1)) {
-			    if (!strncmp(line, "�@��:", 5) ||
-				!strncmp(line, "���D:", 5) ||
-				!strncmp(line, "�ɶ�:", 5))
+			    if (!strncmp(line, SHM->i18nstr[cuser.language][1028], 5) ||
+				!strncmp(line, SHM->i18nstr[cuser.language][1029], 5) ||
+				!strncmp(line, SHM->i18nstr[cuser.language][1030], 5))
 				continue;
 			    insert_string(line);
 			}
@@ -2176,7 +2169,7 @@ vedit(char *fpath, int saveheader, int *islocal)
 		    char            ans[4];
 
 		    getdata(b_lines - 1, 0,
-			    "�϶��L�եk�����J�r��(�w�]���ťզr��)",
+			    SHM->i18nstr[cuser.language][1031],
 			    ans, sizeof(ans), LCECHO);
 		    insert_c = (*ans) ? *ans : ' ';
 		}
diff --git a/mbbsd/xyz.c b/mbbsd/xyz.c
index b20b9d74..5324a3a2 100644
--- a/mbbsd/xyz.c
+++ b/mbbsd/xyz.c
@@ -7,7 +7,7 @@
 int
 x_90()
 {
-    use_dict("(90)����Ҹ�/�m�W/�Ǯ�/��t/����", "etc/90");
+    use_dict(SHM->i18nstr[cuser.language][2431], "etc/90");
     return 0;
 }
 
@@ -15,21 +15,21 @@ x_90()
 int
 x_89()
 {
-    use_dict("(89)����Ҹ�/�m�W/�Ǯ�/��t/����", "etc/89");
+    use_dict(SHM->i18nstr[cuser.language][2432], "etc/89");
     return 0;
 }
 /* Ptt88�~�פj���p�۬d�]�t��  */
 int
 x_88()
 {
-    use_dict("(88)����Ҹ�/�m�W/�Ǯ�/��t/����", "etc/88");
+    use_dict(SHM->i18nstr[cuser.language][2433], "etc/88");
     return 0;
 }
 /* Ptt87�~�פj���p�۬d�]�t��  */
 int
 x_87()
 {
-    use_dict("(87)����Ҹ�/�m�W/�Ǯ�/��t", "etc/87");
+    use_dict(SHM->i18nstr[cuser.language][2434], "etc/87");
     return 0;
 }
 
@@ -37,7 +37,7 @@ x_87()
 int
 x_86()
 {
-    use_dict("(86)����Ҹ�/�m�W/�Ǯ�/��t", "etc/86");
+    use_dict(SHM->i18nstr[cuser.language][2435], "etc/86");
     return 0;
 }
 
@@ -180,7 +180,7 @@ note()
     notedata_t      myitem;
 
     if (cuser.money < 5) {
-	vmsg("\033[1;41m �u�r! �n�뤭�Ȥ~��d��...�S���C..\033[m");
+	vmsg(SHM->i18nstr[cuser.language][2436]);
 	return 0;
     }
     setutmpmode(EDNOTE);
@@ -188,11 +188,11 @@ note()
 	myitem.buf[0][0] = myitem.buf[1][0] = myitem.buf[2][0] = '\0';
 	move(12, 0);
 	clrtobot();
-	outs("\n�뤭��... ��... �Яd�� (�ܦh�T��)�A��[Enter]����");
-	for (i = 0; (i < 3) && getdata(16 + i, 0, "�G", myitem.buf[i],
+	outs(SHM->i18nstr[cuser.language][2437]);
+	for (i = 0; (i < 3) && getdata(16 + i, 0, SHM->i18nstr[cuser.language][2438], myitem.buf[i],
 				       sizeof(myitem.buf[i]) - 5, DOECHO)
 	     && *myitem.buf[i]; i++);
-	getdata(b_lines - 1, 0, "(S)�x�s (E)���s�ӹL (Q)�����H[S] ",
+	getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][2439],
 		buf, 3, LCECHO);
 
 	if (buf[0] == 'q' || (i == 0 && *buf != 'e'))
@@ -226,37 +226,33 @@ note()
 	if (total > MAX_NOTE)
 	    total = MAX_NOTE;
     }
-    fputs("\033[1;31;44m��s�w�w�w�w�w�w�w�w�w�w�w�w�w�w�t"
-	  "\033[37m�IJ��W���O\033[31m�u�w�w�w�w�w�w�w�w�w�w�w�w�w�w�s��"
-	  "\033[m\n", fp);
+    fputs(SHM->i18nstr[cuser.language][2440], fp);
     collect = 1;
 
     while (total) {
-	snprintf(buf, sizeof(buf), "\033[1;31m���t\033[32m %s \033[37m(%s)",
+	snprintf(buf, sizeof(buf), SHM->i18nstr[cuser.language][2441],
 		myitem.userid, myitem.username);
 	len = strlen(buf);
 
 	for (i = len; i < 71; i++)
 	    strcat(buf, " ");
-	snprintf(buf2, sizeof(buf2), " \033[1;36m%.16s\033[31m   �u��\033[m\n",
+	snprintf(buf2, sizeof(buf2), SHM->i18nstr[cuser.language][2442],
 		Cdate(&(myitem.date)));
 	strcat(buf, buf2);
 	fputs(buf, fp);
 	if (collect)
 	    fputs(buf, foo);
 	for (i = 0; i < 3 && *myitem.buf[i]; i++) {
-	    fprintf(fp, "\033[1;31m�x\033[m%-74.74s\033[1;31m�x\033[m\n",
+	    fprintf(fp, SHM->i18nstr[cuser.language][2443],
 		    myitem.buf[i]);
 	    if (collect)
-		fprintf(foo, "\033[1;31m�x\033[m%-74.74s\033[1;31m�x\033[m\n",
+		fprintf(foo, SHM->i18nstr[cuser.language][2444],
 			myitem.buf[i]);
 	}
-	fputs("\033[1;31m���s�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w"
-	      "�w�w�w�w�w�w�w�w�w�w�w�w�s��\033[m\n", fp);
+	fputs(SHM->i18nstr[cuser.language][2445], fp);
 
 	if (collect) {
-	    fputs("\033[1;31m���s�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w"
-		  "�w�w�w�w�w�w�w�w�w�w�w�w�w�w�s��\033[m\n", foo);
+	    fputs(SHM->i18nstr[cuser.language][2446], foo);
 	    fclose(foo);
 	    collect = 0;
 	}
@@ -265,8 +261,7 @@ note()
 	if (--total)
 	    read(fd, (char *)&myitem, sizeof(myitem));
     }
-    fputs("\033[1;31;44m��r�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w"
-	  "�w�w�w�w�w�w�w�w�w�w�w�w�r��\033[m\n", fp);
+    fputs(SHM->i18nstr[cuser.language][2447], fp);
     fclose(fp);
     close(fd);
     close(fx);
@@ -311,13 +306,15 @@ mail_sysop()
 
 	move(12, 0);
 	clrtobot();
-	outs("            �s��   ���� ID           �v�d����\n\n");
+	outs(SHM->i18nstr[cuser.language][2448]);
+	outs(SHM->i18nstr[cuser.language][2449]);
+	outs(SHM->i18nstr[cuser.language][2450]);
 
 	for (i = 0; i < j; i++)
 	    prints("%15d.   \033[1;%dm%-16s%s\033[0m\n",
 		 i + 1, 31 + i % 7, sysoplist[i].userid, sysoplist[i].duty);
-	prints("%-14s0.   \033[1;%dm���}\033[0m", "", 31 + j % 7);
-	getdata(b_lines - 1, 0, "                   �п�J�N�X[0]�G",
+	prints(SHM->i18nstr[cuser.language][2451], "", 31 + j % 7);
+	getdata(b_lines - 1, 0, SHM->i18nstr[cuser.language][2452],
 		genbuf, 4, DOECHO);
 	i = genbuf[0] - '0' - 1;
 	if (i >= 0 && i < j) {
@@ -350,8 +347,10 @@ int
 Goodbye()
 {
     char            genbuf[100];
+    char			genbuf1[100];
 
-    getdata(b_lines - 1, 0, "�z�T�w�n���}�i " BBSNAME " �j��(Y/N)�H[N] ",
+	snprintf(genbuf1, sizeof(genbuf1), "%s%s%s", SHM->i18nstr[cuser.language][2453], BBSNAME, SHM->i18nstr[cuser.language][2454]);
+    getdata(b_lines - 1, 0, genbuf1,
 	    genbuf, 3, LCECHO);
 
     if (*genbuf != 'y')
@@ -360,7 +359,7 @@ Goodbye()
     movie(999);
     if (cuser.userlevel) {
 	getdata(b_lines - 1, 0,
-		"(G)�H���ӳu (M)���گ��� (N)�IJ��W���y���O�H[G] ",
+		SHM->i18nstr[cuser.language][2455],
 		genbuf, 3, LCECHO);
 	if (genbuf[0] == 'm')
 	    mail_sysop();
@@ -369,8 +368,7 @@ Goodbye()
     }
     log_memoryusage();
     clear();
-    prints("\033[1;36m�˷R�� \033[33m%s(%s)\033[36m�A�O�ѤF�A�ץ��{\033[45;33m"
-	   " %s \033[40;36m�I\n�H�U�O�z�b���������U���:\033[0m\n",
+    prints(SHM->i18nstr[cuser.language][2456],
 	   cuser.userid, cuser.username, BBSName);
     user_display(&cuser, 0);
     pressanykey();
-- 
cgit v1.2.3