ASP.NET基于CS应用程序平台多语种技术应用研究

C/S应用程序平台多语种技术是一种基于C/S应用技术结构平台的关于多语种的转换和翻译技术。本设计基于Visual Studio.Net集成开发环境,采用SQL Server2000进行数据库后台开发。通过采用数据字典实现应用系统的静态文本转换;通过使用Visual Studio.Net上的默认控件来实现提示信息的多语种转换;采用JavaScript解决报警信息的多语种转换。能够在软件开发工具和开发平台中能够自由进行多语种切换,增强软件开发工具和开发平台的使用性与通用性。本设计采用.NET技术,跨平台性强,运行速度快,用户可以快速、方便的进行操作,达到了预期效果。

关键词: 多语种;数据字典;脚本语言

4.1  功能分析

本设计实现的主要功能有三个:静态文本中的多语种转换,它分为单词和语句;在系统的消息中进行多语种的转换,系统消息分为警告、报警、提示等;报表系统前台页面表项的动态转换。

设计分为三个部分:首先在C/S应用程序的按钮上实现静态文本的多语种转换;然后通过设计一个数据字典实现动态的转换;最后用一个报表系统的提交页面实现页面的多语种转换。

  设计的主要设计思路为“三层结构”,如图4-1所示,具体描述如下。

表现层:位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。

中间业务层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。中间业务层也可以包括一些对“商业逻辑”描述代码在里面。

数据访问层:仅实现对数据的保存和读取操作。数据访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。

图4-1三层结构图

4.2  实现流程

本设计的系统实现流程如图4-2所示,通过一个定义的前台按钮,在建立SQL连接中访问ADO接口,再进入数据库访问数据字典,然后根据需求的不同,访问数据项。

图4-2 流程图

通过前面的分析,本设计开发一个基于Visual Studio.net软件平台的多语种转换模块,实现静态文本中的多语种转换、系统的消息中进行多语种的转换、在生成报表的过程中多语种的转换的功能。在设计与开发中,重点关注静态文本中的多语种转换、系统的消息中进行多语种的转换。探讨既能实现基本的单词转换,又能实现可靠的语意转换的实现方法。

4.3  模块设计

本设计由三个主要模块组成。即静态的多语种转换、动态的多语种转换、报表系统前台页面表项的动态转换。具体的模块设计如图4-3所示。

图4-3 模块设计图

4.4  详细设计

        4.4.1  静态文本中的多语种转换

静态文本的多语种转换分为单词和语句,本设计重点讨论单词在静态文本中的转换。

下面以一个简单的播放程序为例(如图4-4所示)来说明如何在C/S应用系统中进行单词的静态转换。

图4-4 播放程序图

通过在说明这个选项中添加一个功能按钮来实现语种的转换如图4-5所示。

图4-5 播放程序中的功能按纽

在选项中点击按钮“英语”或“中文”时,就会把静态文本中的语种转换过来,效果如图4-6所示。

图4-6 转换后的语种图

具体实现代码如下所示。

       private void menuItem2_Click(object sender, System.EventArgs e) //英文控制按纽

                    {

                          menuFile.Text="File";

                          menuOpen.Text = "Open File";

                          menuLoad.Text="Load File";

                          menuSave.Text="Save Anther File";

                          menuClose.Text="Close File";

                          menuDelSelect.Text="Delete Select File";

                          menuDelAll.Text="Delete All File";

                          menuExit.Text="Exit";

                          menuMedia.Text="Media";

                          menuPlay.Text="Play";

                          menuPause.Text="Pause";

                          menuStop.Text="Stop";

                          menuPrevious.Text="Previous File";

                          menuNext.Text="Next File";

                          menuDiploid.Text="Diploid Play";

                          menuHalf.Text="Half Play";

                          menuLeft.Text="Left";

                          menuRight.Text="Right";

                          menuFull.Text="Full screen";

                          menuHelp.Text="Help";

                          menuAbout.Text="About xlFancyPlay";

                          menuItem2.Text="English";

                          menuItem3.Text="Japanese";

                          menuItem4.Text="Chinese";

                  }

                  private void menuItem3_Click(object sender, System.EventArgs e)//日语控制按钮

                  {

                          menuFile.Text="文件";

                                            menuOpen.Text = "君の名";

                                            menuLoad.Text= "女風呂";

                                            menuSave.Text="消えたと";

                                            menuClose.Text="もっとも";

                                            menuDelSelect.Text="知人の実見談";

                                            menuDelAll.Text="伝説";

                                            menuExit.Text="銭湯";

                                            menuMedia.Text="知らない";

                                            menuPlay.Text="絶える";

                                            menuPause.Text="なか";

                                            menuStop.Text="とちわか";

                                            menuPrevious.Text="風景";

                                            menuNext.Text="部屋";

                                            menuDiploid.Text="子供";

                                            menuHalf.Text="風呂";

                                            menuLeft.Text="伝説";

                                            menuRight.Text="相撲版";

                                            menuFull.Text="あんよ";

                                            menuHelp.Text="ほんとう";

                                            menuAbout.Text="关于 xlFancyPlay";

                                            menuItem2.Text="英国语";

                                            menuItem3.Text="日本语";

                                            menuItem4.Text="中国语";

                  }

                       private void menuItem4_Click(object sender, System.EventArgs e)//中文控制按钮

                                   {

                                            menuFile.Text="文件";

                                            menuOpen.Text = "打开文件";

                                            menuLoad.Text="装入文本文件";

                                            menuSave.Text="文本文件另存为";

                                            menuClose.Text="关闭文本文件";

                                            menuDelSelect.Text="删除选顶列表项";

                                            menuDelAll.Text="删除所有列表项";

                                            menuExit.Text="退出";

                                            menuMedia.Text="媒体";

                                            menuPlay.Text="播放";

                                            menuPause.Text="暂停";

                                            menuStop.Text="停止";

                                            menuPrevious.Text="上一个";

                                            menuNext.Text="下一个";

                                            menuDiploid.Text="倍速播放";

                                            menuHalf.Text="半速播放";

                                            menuLeft.Text="左声道";

                                            menuRight.Text="右声道";

                                            menuFull.Text="全屏";

                                            menuHelp.Text="说明";

                                            menuAbout.Text="关于 xlFancyPlay";

                                            menuItem2.Text="英文";

                                            menuItem3.Text="日文";

                                            menuItem4.Text="中文";

                               }

        4.4.2  报警、提示、警告信息的多语种转换

在报表系统进行多语种的转换就是对消息进行多语种的转换,系统消息分为警告、报警、提示等,用Visual Studio.Net系统平台上所默认的控件或者用脚本语言实现转换功能。

报表系统的信息上传界面如图4-7所示。

图4-7 信息上传界面

通过右上的四个按钮来控制语种的转换,“提交”按钮控制着信息的上传。系统信息的语种转换是通过选用脚本语言来控制和实现的。关于对用脚本语言进行消息的多语种转换,其主要是用于对验证为空的信息的语言转换。

英语提交前台上的验证信息转换如图4-8所示。

图4-8 英语提交前台上的验证信息转换

在中文提交前台的界面如图4-9所示。

图4-9 中文提交前台的验证信息转换

具体实现代码如下所示。

以上代码的功能是通过加载页面的元素getElementById来判spankiss的值,再最终决定是调用英文还是中文的标识。

在限制数据上传的位数时,采用RangeValidator控件,中文的界面上的报警信息如图4-10所示。

图4-10 中文界面报警信息

而转换过来的英文界面的报警信息如图4-11所示。

图4-11 英文界面报警信息

具体实现代码如下所示:

this.RangeValidator1.ErrorMessage="ToyId is 3 Bit";//定义控件的信息内容

                          this.RangeValidator3.ErrorMessage="ToyDescription is less than 125 chinese wrod";

                          this.RangeValidator2.ErrorMessage="CategoryId is 3 Bit";

                          this.RangeValidator4.ErrorMessage="ToyRate is currency";

                          this.RangeValidator5.ErrorMessage="BrandId should be 3 Bite";

                          this.RangeValidator6.ErrorMessage="LowerAge is less than 125";

                          this.RangeValidator8.ErrorMessage="UpperAge is less than 125";

​​​​​​​​​​​​​​        4.4.3  报表系统前台页面表项的动态转换
在数据库技术中,在数据字典中进行单词多语种的关联,使前台能够自由的调用数据,数据字典(如图4-12所示)是指在数据库中所有表的集合。

图4-12 数据字典表

通过调用一个按钮调用表中的列来进行动态的调用,效果图如图4-13所示。

图4-13 报表上传页面的中文界面

通过英文转换后的界面如图4-14所示。

图4-14报表上传页面的英文界面

其重要的代码如下所示。

从数据库中访问并提取数据项

public class Class1

         {

                  public Class1()

                  {

                          //

                          // TODO: 在此处添加构造函数逻辑

                          //

                  }

                  public SqlConnection Sqlcon()

                  {

                          SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=;database=jloa");

                          return conn;

        

                  }//建立数据库连接

        public string sqlSelect(string ToyId,string ToyName,string ToyDescription,string CategoryId,string ToyRate,string BrandId,string Photo,string ToyQoh,string LowerAge,string UpperAge,string ToyWeight,string ToyImgPath)

                  {

                          SqlConnection con=this.Sqlcon();

                          con.Open();

            SqlCommand  cmd =new SqlCommand("select ChineseWord from Dic ",con);  //从数据字典中调用chineseWord

                          SqlDataReader rd=cmd.ExecuteReader(); //SQL语句的值;

                          string temp="-";

                          int i =0;

                          while(rd.Read())   //循环读SQL命令

                          {

                          temp+=rd["ChineseWord"].ToString()+"-"; //把读出来的值放到字符中,用间隔隔开;

                                   i++;

                          }

                          con.Close();

                          return temp;

                  }

                  public string sqlSelect1(string ToyId,string ToyName,string ToyDescription,string CategoryId,string ToyRate,string BrandId,string Photo,string ToyQoh,string LowerAge,string UpperAge,string ToyWeight,string ToyImgPath)

                  {

                          SqlConnection con=this.Sqlcon();

                          con.Open();

                          SqlCommand  cmd =new SqlCommand("select EnglishWord from Dic ",con);

                          SqlDataReader rd=cmd.ExecuteReader();

                          string temp="-";

                          int i =0;

                          while(rd.Read())

                          {

                                   temp+=rd["EnglishWord"].ToString()+"-";

                                   i++;

                          }

                          con.Close();

                          return temp;

                  }

                  public int sqlQuery(string str)

                  {

                          SqlConnection con=this.Sqlcon();

                          con.Open();

                          SqlCommand cmd =new SqlCommand(str,con);

                          int i=cmd.ExecuteNonQuery();

                          con.Close();

                          return i;

                  }

         }

}

对从数据库提出的数据进行转换。

Class1 tool=new Class1();

                          string i=tool.sqlSelect(this.Label2.Text.ToString(),this.Label5.Text.ToString(),this.Label4.Text.ToString(),this.Label3.Text.ToString(),this.Label11.Text.ToString(),this.Label10.Text.ToString(),this.Label9.Text.ToString(),this.Label8.Text.ToString(),this.Label7.Text.ToString(),this.Label6.Text.ToString(),this.Label12.Text.ToString(),this.Label14.Text.ToString());

                  Label2.Text=i.Split('-')[1].ToString().Replace("cToyId","ToyId");     //从数据库表中取出某一字段的值,然后再次分配。

                          Label5.Text=i.Split('-')[2].ToString().Replace("vToyName","ToyName");

                          Label4.Text=i.Split('-')[3].ToString().Replace("vToyDescription","Detail");

                          Label3.Text=i.Split('-')[4].ToString().Replace("cCategoryId","CateId");

                          Label11.Text=i.Split('-')[5].ToString().Replace("mToyRate","ToyRate");

                          Label10.Text=i.Split('-')[6].ToString().Replace("cBrandId","BrandId");

                          Label9.Text=i.Split('-')[7].ToString().Replace("imPhoto","Photo");

                          Label8.Text=i.Split('-')[8].ToString().Replace("siToyQoh","ToyQoh");

                          Label7.Text=i.Split('-')[9].ToString().Replace("siLowerAge","LowerAge");

                          Label6.Text=i.Split('-')[10].ToString().Replace("siUpperAge","UpperAge");

                          Label12.Text=i.Split('-')[11].ToString().Replace("siToyWeight","Weight");

                          Label14.Text=i.Split('-')[12].ToString().Replace("vToyImgPath","ImgPath");

                          this.Button3.Text="Refer";

                          this.Button2.Text="Chinese";

                          this.Button1.Text="English";

                          this.Button5.Text="Japenese";

                          this.Label13.Text=" refering please!";

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 22:46:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 22:46:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 22:46:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 22:46:03       20 阅读

热门阅读

  1. 推荐算法之协同过滤

    2024-04-20 22:46:03       14 阅读
  2. python中的并发编程-进程、线程2

    2024-04-20 22:46:03       14 阅读
  3. 数据库-Redis(18)

    2024-04-20 22:46:03       14 阅读
  4. wsl + ubuntu + pycups + mqtt 远程打印入门

    2024-04-20 22:46:03       16 阅读
  5. docker-002常用命令

    2024-04-20 22:46:03       12 阅读
  6. 数据结构6:时间复杂度和空间复杂度

    2024-04-20 22:46:03       50 阅读
  7. vue处理异步状态的逻辑useAsyncState

    2024-04-20 22:46:03       19 阅读