英文字段名自动翻译为中文的实现
2019-12-23刘友生
摘 要: 在数据库设计时为了使数据库能够与操作系统的环境兼容,通常将数据库的字段名用英文来表示,但在数据显示时又希望以中文来显示字段名。虽然可以在Select语句中通过指定别名来解决这个问题,但如果数据库表名很多,需要查询也很多时,这种方法很麻烦而且没有通用性。因此,提出将英文字段名和对应的中文字段名预存于数据库中,当需要显示时,通过设计对应的Web构件,将要显示的英文字段名与预存数据库中的中文进行匹配来显示。实践证明,用这种方法能很好地解决了用中文显示英文字段名的问题。
关键词: 数据库; 英文字段名; 显示构件; 自动翻译
中图分类号:TP392 文献标志码:B 文章编号: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應用程序的设计中,数据库是支撑应用程序的重要部分,因此很多应用程序都需要数据库作为后台数据管理用。在数据库的设计时,为了使数据库能够与操作系统的环境兼容,通常将数据库的字段名用英文来表示,但这样存在一个问题:当显示字段名时,如果没有特殊的处理,数据库中字段名原来设计的是英文,显示出来的字段名仍然是英文,对用户来说,有时很难理解。
为了使中文用户能够理解英文字段的含义,这就需要将英文字段转化为中文显示,通常的设计方法是在Select语句中使用别名来显示中文:Select ClassName as菜单名称,content as栏目内容,Script as内容描述,FileName as连接文件名,FileTitle as文件标题from TreeMenuGJK。
这样解决了将英文字段显示为中文的问题,但如果要将某个字段绑定到一些控件(如DropDownList控件)上显示时,控件显示出来的还是英文。这个问题在软件开发很多地方都会出现。特别是当开发一个大型系统,数据库中的表特别多,字段名又五花八门,每个要显示、查询地方都要人工转换语句是件很麻烦的事情,而且容易出错,那么,如何将英文字段自动以中文来显示,对于这个问题我们以下将详细介绍解决方案。
1 解决方案
将英文字段自动翻译为英文字段的解决方案如图1所示。
该方案包括两部分:数据库设计和数据库显示。
数据库设计部分,按常规设计方法先设计数据库,然后在此基础上,增加一个将英文字段自动翻译为英文字段的数据表。
数据库显示部分,增加一个“字段翻译构件”,利用“字段翻译构件”将英文自动翻译为中文。
2 解决方案的实现
2.1 数据库的设计
在设计数据库时,我们还是按以前的常规方法设计,数据表的字段名还是使用英文,只是在设计数据库时,增加一个中英文字段名对照表,如表名为“FieldCHs_Eng”,表的结构对照如表1所示。
表以三个字段组成:ID、FieldName和Field Name Chinese,其中Field Name是英文字段名,Field Name Chinese是英文字段名对应的中文名称。
设计好之后,将所有数据库设计中的英文字段名和对应的中文名称通过添加记录程序,添加到“FieldCHs_Eng”表中。
2.2 与自动翻译相关构件的设计
有关Web构件的设计思路、方法,在文献[1]和文献[2] 中有详细描述,为此我们参考文献[1] 和文献[2]的方法,以构件的设计思路,分别将SQL语句中的英文字段自动显示为中文和数据库中的英文字段名显示为中文,以下是实现的相关构件核心代码。
⑴ 将SQL语句中的英文字段自动用别名转换为中文名称显示构件的设计
如果SQL查询语句中包括英文字段,在没有使用别名的情况下,要将SQL查询语句中的英文字段中文显示,需要设计一个转化构件,构件名称为EnglishSQLToChineseSQL,它的功能是将SQL语句中英文字段名自动转换为中文,构件核心代码如下:
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;
}
其中参数C_ETable为中英文对照表,EnglishFiledNameSQL为英文字段名显示的SQL语句。
使用方法:
engSQL="Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
SQL = myud.EnglishSQLToChineseSQL("FieldCHs_ Eng", engSQL);
这样将英文SQL语句engSQL中的字段名自动用As 别名转换成中文名称,如上述语句得到:
Select ClassName as菜单名称,content as栏目内容,content as栏目内容Script as内容描述,FileName as连接文件名,FileTitle as文件标题from TreeMenuGJK
⑵ 从中英文字段对照表中,读取英文字字段名,返回中文字段名构件GetChineseFieldValue的设计
构件名称为GetChineseFieldValue,它的功能是从中英文字段对照表中,读取英文字字段名,返回中文字段名,构件代码如下:
public string GetChineseFieldValue(string EnglishFieldvalue,string Tablename)
{ string SQL = "Select * from " + Tablename + " where FieldName='" + EnglishFieldvalue+"'";
……
getValue=objreader["FieldNameChinese"].ToString();
……
return getValue;
}
其中,參数EnglishFieldvalue为英文字段名,Tablename为中英文对照表名。
使用方法:
在需要显示字段名的地方,用函数GetChineseFieldValue进行转换,如在连接并打开数据库后,创建objreader对象,然后通过objreader对象显示字段名的语句是:
objreader.GetName(i)
这样显示的字段名是英语,将上述语句修改成:
GetChineseFieldValue(objreader.GetName(i), "FieldCHs_Eng")
这样显示的字段名就是中文了。
⑶ 通用数据显示构件DispLineData、数据绑定构件的设计(略)
3 自动翻译构件的测试和使用
⑴ 自动翻译英文SQL语句为中文别名
创建Web应用程序,创建测试页Test1.aspx,在测试页面中添加一个Literal控件即可。
UserData myud = new UserData(); //在事件代码中创建构件类的实例。
然后在Page_Load事件中加入以下代码:
string SQL = "Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
Literal1.Text = myud.EnglishSQLToChineseSQL("FieldCHs_Eng",SQL);
程序运行结果如图2所示。
⑵ 自动翻译英文字段名为中文,并显示数据库中的记录
首先创建测试页Test2.aspx,界面中添加一个Literal控件,然后在事件代码中加入以下代码:
UserData myud = new UserData();
string SQL = "Select * from TreeMenuGJK";
protected void Page_Load(object sender,EventArgse)
{
Literal1.Text =myud.DispLineData(SQL).ToString();
}
程序运行结果如图3所示。
如果将字段绑定到DropDownList控件显示,使用方法与上面基本一致。效果图略。
4 结束语
本文详细介绍了如何将英文字段名翻译为中文来显示的解决方案。该方案在Web应用程序的开发与设计中,很好地解决了英文字段用中文显示的问题,加快了软件开发速度。测试和实际使用效果良好。
参考文献(References):
[1] 刘友生等.《基于构件的ASP.NET (C#)网站开发教程》. 北京:化学工业出版社,2011.
[2] 刘友生等.《构件化Web项目开发(ASP.NET C#)》. 北京:清华大学出版社,2011.