摘? 要: 在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)為了使數(shù)據(jù)庫(kù)能夠與操作系統(tǒng)的環(huán)境兼容,通常將數(shù)據(jù)庫(kù)的字段名用英文來(lái)表示,但在數(shù)據(jù)顯示時(shí)又希望以中文來(lái)顯示字段名。雖然可以在Select語(yǔ)句中通過(guò)指定別名來(lái)解決這個(gè)問(wèn)題,但如果數(shù)據(jù)庫(kù)表名很多,需要查詢也很多時(shí),這種方法很麻煩而且沒(méi)有通用性。因此,提出將英文字段名和對(duì)應(yīng)的中文字段名預(yù)存于數(shù)據(jù)庫(kù)中,當(dāng)需要顯示時(shí),通過(guò)設(shè)計(jì)對(duì)應(yīng)的Web構(gòu)件,將要顯示的英文字段名與預(yù)存數(shù)據(jù)庫(kù)中的中文進(jìn)行匹配來(lái)顯示。實(shí)踐證明,用這種方法能很好地解決了用中文顯示英文字段名的問(wèn)題。
關(guān)鍵詞: 數(shù)據(jù)庫(kù); 英文字段名; 顯示構(gòu)件; 自動(dòng)翻譯
中圖分類號(hào):TP392? ? ? ? ? 文獻(xiàn)標(biāo)志碼:B? ? ?文章編號(hào):1006-8228(2019)12-64-03
The implementation of automatic translation of English field name into Chinese
Liu Yousheng
(Computer Department, Guangdong Songshan Polytechnic College, Shaoguan, Guangdong 512126, China)
Abstract: In order to make the database compatible with the environment of the operating system, the field name of the database is usually expressed in English, but when displaying the data, the field name is expected to be displayed in Chinese. Although the alias can be specified in the Select statement, this method is troublesome if there are many table names in the database and many queries are needed. In order to solve this problem, it is proposed to save the English word names and corresponding Chinese field names in the database. When a field name needs to be displayed,? the English field name can be matched to the Chinese one in the database by designing the corresponding Web components. Practice has proved that this method can realize the automatic display of English fields in Chinese, which solves the problem of Chinese display.
Key words: database; English field name; display component; automatic translation
0 引言
在Web應(yīng)用程序的設(shè)計(jì)中,數(shù)據(jù)庫(kù)是支撐應(yīng)用程序的重要部分,因此很多應(yīng)用程序都需要數(shù)據(jù)庫(kù)作為后臺(tái)數(shù)據(jù)管理用。在數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),為了使數(shù)據(jù)庫(kù)能夠與操作系統(tǒng)的環(huán)境兼容,通常將數(shù)據(jù)庫(kù)的字段名用英文來(lái)表示,但這樣存在一個(gè)問(wèn)題:當(dāng)顯示字段名時(shí),如果沒(méi)有特殊的處理,數(shù)據(jù)庫(kù)中字段名原來(lái)設(shè)計(jì)的是英文,顯示出來(lái)的字段名仍然是英文,對(duì)用戶來(lái)說(shuō),有時(shí)很難理解。
為了使中文用戶能夠理解英文字段的含義,這就需要將英文字段轉(zhuǎn)化為中文顯示,通常的設(shè)計(jì)方法是在Select語(yǔ)句中使用別名來(lái)顯示中文:Select ClassName as菜單名稱,content as欄目?jī)?nèi)容,Script as內(nèi)容描述,F(xiàn)ileName as連接文件名,F(xiàn)ileTitle as文件標(biāo)題from TreeMenuGJK。
這樣解決了將英文字段顯示為中文的問(wèn)題,但如果要將某個(gè)字段綁定到一些控件(如DropDownList控件)上顯示時(shí),控件顯示出來(lái)的還是英文。這個(gè)問(wèn)題在軟件開(kāi)發(fā)很多地方都會(huì)出現(xiàn)。特別是當(dāng)開(kāi)發(fā)一個(gè)大型系統(tǒng),數(shù)據(jù)庫(kù)中的表特別多,字段名又五花八門,每個(gè)要顯示、查詢地方都要人工轉(zhuǎn)換語(yǔ)句是件很麻煩的事情,而且容易出錯(cuò),那么,如何將英文字段自動(dòng)以中文來(lái)顯示,對(duì)于這個(gè)問(wèn)題我們以下將詳細(xì)介紹解決方案。
1 解決方案
將英文字段自動(dòng)翻譯為英文字段的解決方案如圖1所示。
該方案包括兩部分:數(shù)據(jù)庫(kù)設(shè)計(jì)和數(shù)據(jù)庫(kù)顯示。
數(shù)據(jù)庫(kù)設(shè)計(jì)部分,按常規(guī)設(shè)計(jì)方法先設(shè)計(jì)數(shù)據(jù)庫(kù),然后在此基礎(chǔ)上,增加一個(gè)將英文字段自動(dòng)翻譯為英文字段的數(shù)據(jù)表。
數(shù)據(jù)庫(kù)顯示部分,增加一個(gè)“字段翻譯構(gòu)件”,利用“字段翻譯構(gòu)件”將英文自動(dòng)翻譯為中文。
2 解決方案的實(shí)現(xiàn)
2.1 數(shù)據(jù)庫(kù)的設(shè)計(jì)
在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),我們還是按以前的常規(guī)方法設(shè)計(jì),數(shù)據(jù)表的字段名還是使用英文,只是在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),增加一個(gè)中英文字段名對(duì)照表,如表名為“FieldCHs_Eng”,表的結(jié)構(gòu)對(duì)照如表1所示。
表以三個(gè)字段組成:ID、FieldName和Field Name Chinese,其中Field Name是英文字段名,F(xiàn)ield Name Chinese是英文字段名對(duì)應(yīng)的中文名稱。
設(shè)計(jì)好之后,將所有數(shù)據(jù)庫(kù)設(shè)計(jì)中的英文字段名和對(duì)應(yīng)的中文名稱通過(guò)添加記錄程序,添加到“FieldCHs_Eng”表中。
2.2 與自動(dòng)翻譯相關(guān)構(gòu)件的設(shè)計(jì)
有關(guān)Web構(gòu)件的設(shè)計(jì)思路、方法,在文獻(xiàn)[1]和文獻(xiàn)[2] 中有詳細(xì)描述,為此我們參考文獻(xiàn)[1] 和文獻(xiàn)[2]的方法,以構(gòu)件的設(shè)計(jì)思路,分別將SQL語(yǔ)句中的英文字段自動(dòng)顯示為中文和數(shù)據(jù)庫(kù)中的英文字段名顯示為中文,以下是實(shí)現(xiàn)的相關(guān)構(gòu)件核心代碼。
⑴ 將SQL語(yǔ)句中的英文字段自動(dòng)用別名轉(zhuǎn)換為中文名稱顯示構(gòu)件的設(shè)計(jì)
如果SQL查詢語(yǔ)句中包括英文字段,在沒(méi)有使用別名的情況下,要將SQL查詢語(yǔ)句中的英文字段中文顯示,需要設(shè)計(jì)一個(gè)轉(zhuǎn)化構(gòu)件,構(gòu)件名稱為EnglishSQLToChineseSQL,它的功能是將SQL語(yǔ)句中英文字段名自動(dòng)轉(zhuǎn)換為中文,構(gòu)件核心代碼如下:
public string EnglishSQLToChineseSQL(string C_ETable, string EnglishFiledNameSQL)
{
……
if (EnglishFiledNameSQL.IndexOf(objreader["FieldName"].ToString()) >= 0)
{
EnglishFiledNameSQL = EnglishFiledNameSQL.Replace(objreader["FieldName"].ToString(), objreader["FieldName"].ToString()+" as " + objreader["FieldNameChinese"].ToString());
}
return EnglishFiledNameSQL;
}
其中參數(shù)C_ETable為中英文對(duì)照表,EnglishFiledNameSQL為英文字段名顯示的SQL語(yǔ)句。
使用方法:
engSQL="Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
SQL = myud.EnglishSQLToChineseSQL("FieldCHs_ Eng", engSQL);
這樣將英文SQL語(yǔ)句engSQL中的字段名自動(dòng)用As 別名轉(zhuǎn)換成中文名稱,如上述語(yǔ)句得到:
Select ClassName as菜單名稱,content as欄目?jī)?nèi)容,content as欄目?jī)?nèi)容Script as內(nèi)容描述,F(xiàn)ileName as連接文件名,F(xiàn)ileTitle as文件標(biāo)題from TreeMenuGJK
⑵ 從中英文字段對(duì)照表中,讀取英文字字段名,返回中文字段名構(gòu)件GetChineseFieldValue的設(shè)計(jì)
構(gòu)件名稱為GetChineseFieldValue,它的功能是從中英文字段對(duì)照表中,讀取英文字字段名,返回中文字段名,構(gòu)件代碼如下:
public string GetChineseFieldValue(string EnglishFieldvalue,string Tablename)
{ string SQL = "Select * from " + Tablename + " where FieldName='" + EnglishFieldvalue+"'";
……
getValue=objreader["FieldNameChinese"].ToString();
……
return getValue;
}
其中,參數(shù)EnglishFieldvalue為英文字段名,Tablename為中英文對(duì)照表名。
使用方法:
在需要顯示字段名的地方,用函數(shù)GetChineseFieldValue進(jìn)行轉(zhuǎn)換,如在連接并打開(kāi)數(shù)據(jù)庫(kù)后,創(chuàng)建objreader對(duì)象,然后通過(guò)objreader對(duì)象顯示字段名的語(yǔ)句是:
objreader.GetName(i)
這樣顯示的字段名是英語(yǔ),將上述語(yǔ)句修改成:
GetChineseFieldValue(objreader.GetName(i), "FieldCHs_Eng")
這樣顯示的字段名就是中文了。
⑶ 通用數(shù)據(jù)顯示構(gòu)件DispLineData、數(shù)據(jù)綁定構(gòu)件的設(shè)計(jì)(略)
3 自動(dòng)翻譯構(gòu)件的測(cè)試和使用
⑴ 自動(dòng)翻譯英文SQL語(yǔ)句為中文別名
創(chuàng)建Web應(yīng)用程序,創(chuàng)建測(cè)試頁(yè)Test1.aspx,在測(cè)試頁(yè)面中添加一個(gè)Literal控件即可。
UserData myud = new UserData(); //在事件代碼中創(chuàng)建構(gòu)件類的實(shí)例。
然后在Page_Load事件中加入以下代碼:
string SQL = "Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
Literal1.Text = myud.EnglishSQLToChineseSQL("FieldCHs_Eng",SQL);
程序運(yùn)行結(jié)果如圖2所示。
⑵ 自動(dòng)翻譯英文字段名為中文,并顯示數(shù)據(jù)庫(kù)中的記錄
首先創(chuàng)建測(cè)試頁(yè)Test2.aspx,界面中添加一個(gè)Literal控件,然后在事件代碼中加入以下代碼:
UserData myud = new UserData();
string SQL = "Select * from TreeMenuGJK";
protected void Page_Load(object sender,EventArgse)
{
Literal1.Text =myud.DispLineData(SQL).ToString();
}
程序運(yùn)行結(jié)果如圖3所示。
如果將字段綁定到DropDownList控件顯示,使用方法與上面基本一致。效果圖略。
4 結(jié)束語(yǔ)
本文詳細(xì)介紹了如何將英文字段名翻譯為中文來(lái)顯示的解決方案。該方案在Web應(yīng)用程序的開(kāi)發(fā)與設(shè)計(jì)中,很好地解決了英文字段用中文顯示的問(wèn)題,加快了軟件開(kāi)發(fā)速度。測(cè)試和實(shí)際使用效果良好。
參考文獻(xiàn)(References):
[1] 劉友生等.《基于構(gòu)件的ASP.NET (C#)網(wǎng)站開(kāi)發(fā)教程》. 北京:化學(xué)工業(yè)出版社,2011.
[2] 劉友生等.《構(gòu)件化Web項(xiàng)目開(kāi)發(fā)(ASP.NET C#)》. 北京:清華大學(xué)出版社,2011.