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!";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/548107.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT 浅析

GPT 浅析 文章目录 GPT 浅析GPT 1无监督预训练有监督微调任务相关的输入变换 GPT2GPT3 GPT 1 在模型架构上,GPT-1基于Transformer构造,这是因为与其他卷积神经网 络或者循环神经网络相比,Transformer提供了效率更高的方法来处理文本 中的长期…

C#使用PaddleOCR进行图片文字识别✨

PaddlePaddle介绍✨ PaddlePaddle(飞桨)是百度开发的深度学习平台,旨在为开发者提供全面、灵活的工具集,用于构建、训练和部署各种深度学习模型。它具有开放源代码、高度灵活性、可扩展性和分布式训练等特点。PaddlePaddle支持端…

大世界基尼斯见证辉煌,云仓酒庄首届酒类培训新高度诞生

近日,一场规模盛大的酒类培训盛会,在云仓酒庄的精心组织下圆满落幕。此次培训活动以其卓着的成果和盛大的规模,创下了大世界基尼斯纪录,为酒类培训领域树立了新的标杆。这一成就的取得,背后是云仓酒庄团队无数的心血与…

【JAVA进阶篇教学】第一篇:JDK8介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第一篇:JDK8介绍。 Java 8 引入了许多令人兴奋的新特性,其中包括 Lambda 表达式、Stream API、函数式接口、方法引用、默认方法等。下面我将为您详细介绍这些新特性,并提供相应的代码…

代码随想录刷题随记22-回溯2

代码随想录刷题随记22-回溯2 216.组合总和III leetcode链接 注意与之前的题目不同的是需要求和。从左到右的范围尝试模型。 class Solution { public:void backtrace(vector<vector<int>> &ret,int k,int n,int index,vector<int>& path,int &…

【XR806开发板试用】软件模拟IIC驱动OLED显示图片自己遇到的坑

前言 首先&#xff0c;非常感谢极术社区和全志举办此次开发板申请试用活动。由于自己水平太低&#xff0c;拿到板子后不知道要干点啥&#xff0c;偶然看见一个大佬写的I2C外设使用及控制OLED屏显示&#xff0c;文章中使用了硬件IIC控制OLED&#xff0c;正好我手里也有一块OLED…

【ElasticSearch】安装

1.官网寻找合适版本下载 这里我选择的是8.11.1 2.解压并启动 然后在浏览器输入http://localhost:9200/&#xff0c;判断是否启动成功 如下所示&#xff0c;则表示启动成功 安装过程中遇到过几个bug&#xff0c;记录在这篇文章中 【ElasticSearch】安装&#xff08;bug篇&am…

MySQL——基础

SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL 通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库…

mysql使用逗号分隔的一行数据转多行数据

文章目录 学习链接准备建表插入数据 方法MySQL逗号拼接的列拆分为多行&#xff08;不使用mysql.help_topic&#xff09;遇到字段以逗号分隔符分号分隔符存放多个值&#xff0c;需要一行转化多行&#xff0c;以用来关联&#xff08;使用mysql.help_topic&#xff09;改为LEFT JO…

git 上传代码到 github

准备工作 git Git LFS&#xff08;大文件>100Mb&#xff09; git 参考手册 github 建立仓库&#xff1a;New repository git 指令 git add . 用于将当前目录下的所有文件添加到 Git 仓库的暂存区中。 git add . 命令会将当前目录下的所有文件添加到 Git 仓库的暂存区中…

五、流程控制之循环

目录 5.1 步进循环语句for 5.1.1 带列表的for循环语句 5.1.2 不带列表的for循环语句 5.1.3 类C风格的for循环语句 5.2 while循环语句 5.2.1 while循环读取文件 5.2.2 while循环语句示例 5.3 until循环语句 5.4 select循环语句 5.5 嵌套循环 5.1 步进循环语句for for…

如何使用ArcGIS Pro进行路径分析

路径分析是一种空间分析技术&#xff0c;用于确定两个或多个地点之间最佳路径或最短路径&#xff0c;这里为大家介绍一下在ArcGIS Pro中如何进行路径分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的道路数据&#xff0c;除了道路数据&a…

大厂面试:获取字符串的全排列

一、概念 现有一个字符串&#xff0c;要打印出该字符串中字符的全排列。例如输入字符串abc&#xff0c;则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 可以基于回溯法来解决这个问题。 二、代码 public class Permutation {//输出字符串str的全…

【自媒体创作利器】AI白日梦+ChatGPT 三分钟生成爆款短视频

AI白日梦https://brmgo.com/signup?codey5no6idev 引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI在各个领域都展现出了强大的应用潜力。其中&#xff0c;自然语言处理技术的进步使得智能对话系统得以实现&#xff0c;而ChatGPT作为其中的代表之一…

【Linux】磁盘阵列RAID技术

目录 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 1.2 为什么要使用RAID技术&#xff1f; 二、RAID级别 2.1 常见的RAID级别 2.2 常见RAID介绍 三、RAID特性对比 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 把多块独立的物理磁盘按不同的方式组合起来形成一个硬盘…

人工智能讲师大模型培训老师叶梓:基于大型语言模型的自主智能体:架构设计与应用前景

在人工智能的快速发展中&#xff0c;大型语言模型&#xff08;LLM&#xff09;已成为推动技术进步的关键力量。LLM的出现不仅改变了我们与机器的交互方式&#xff0c;也为构建具有高级认知能力的自主智能体&#xff08;AI Agent&#xff09;提供了新的可能性。本文旨在探讨基于…

(非技术) 基因遗传相关知识学习笔记

目录 一、基因遗传名词解释 二、什么叫显性遗传和隐性遗传&#xff1f; 三、如何确定遗传性质呢&#xff1f;是显性还是隐性&#xff1f; 四、常规例子1&#xff1a; 五、常规例子2&#xff1a; 六、实际案例&#xff1a; 七、思考题&#xff1a; 八、参考&#xff1a; …

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…

【Linux】基础I/O>文件系统软硬链接动静态库详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.C语言文件接口 1.1 hello.c写文件 1.2 hello.c读文件 1.3 输出信息到显示器 1.4 stdin & stdout & stderr 1.5 总结打…

Android Framework学习笔记(3)----Binder

什么是Binder&#xff1f; Binder是linux IPC机制的其中一种。它贯穿于应用层&#xff0c;framework层&#xff0c;以及linux Core层。 什么是IPC? 跨进程通信&#xff0c; InterProcess Communication. IPC机制都有哪些&#xff1f; 通道信号量消息队列BinderSocket共享内…
最新文章