多语言系统的实现

被老美卖掉后, 工作多了,工资涨得却少了,做不完的活, 现总算完成了手头上的紧急工作,上来写一下有关多语言系统的实现, 我们的做法是:如果系统只是简繁体,直接就可以用函数实现了. 因为他们具有一一对应关系,可是其它语言呢? 由于不具有语言的对照关系,只能分别写了. 最初的系统我们是采用写多个页面来实现,后面觉得这种方法不但工作量大,而且改功能的话,同一事情要重复劳动.后面我们就采用XML记录的方式来处理了. 不知各位大侠是如何做的呢?

 private void Page_Load(object sender, EventArgs e)
        {
            if (!base.IsPostBack)
            {
                this.English.HRef = "public/login.aspx?Version=eng";
                this.ChineseT.HRef = "public/login.aspx?Version=cht";
                this.ChineseS.HRef = "public/login.aspx?Version=chs";

            }
        }

系统默认做成的是英文的. 如果上面选择是简体中文,则会判断,并加载相应语言的XML

 private void Page_Load(object sender, EventArgs e)
        {
            this.lblMsg.Text = "";
            this.lblError.Text = "";
            if (!this.Page.IsPostBack)
            {
                if (base.Request.QueryString.Get("Version") != null)
                {
                    this.Session["Version"] = base.Request.QueryString.Get("Version");
                }
                else
                {
                    this.Session["Version"] = "chs";
                }
                if (this.Context.User.Identity.IsAuthenticated)
                {
                    base.Response.Redirect("../mainform.aspx");
                }
                switch (this.Session["Version"].ToString())
                {
                    case "chs":
                        base.SetControlsText(base.Server.MapPath("login_chs.xml"));
                        break;

                    case "cht":
                        base.SetControlsText(base.Server.MapPath("login_cht.xml"));
                        break;
                }
                this.btnLogin.Attributes.Add("onclick", "return checkuser();");
                this.AddAdmin();
            }
            this.CheckUser();
        }

上面的函数SetControlsText定义, 就是把相应的菜单替换成你想要的语言.

protected void SetControlsText(string Filename)
        {
            XmlDocument document = new XmlDocument();
            document.Load(Filename);
            XmlNode node = document.SelectSingleNode("/Controls");
            this.SetLabelText(node);
            this.SetButtonText(node);
            this.SetCheckBoxText(node);
            this.SetRadioButtonText(node);
            this.SetRadioButtonListText(node);
            this.SetDataGridHeaderText(node);
            this.SetCusDataGridHeaderText(node);
        }

xml文件里定义的内容是:

<?xml version="1.0" encoding="gb2312"?>
<Controls>
<Labels>
 <Label>
  <id>User</id>
  <name>用户</name>
 </Label>
 <Label>
  <id>Password</id>
  <name>密码</name>
 </Label>
 <Label>
  <id>Forget your password?</id>
  <name>忘记密码了吗?</name>
 </Label>
 <Label>
  <id>Login</id>
  <name>登录</name>
 </Label>
</Labels>

<Buttons>
 <Button>
  <id>Login</id>
  <name>登录</name>
 </Button>
 <Button>
  <id>Home</id>
  <name>首页</name>
 </Button>
 <Button>
  <id>Email password</id>
  <name>发送密码到邮箱</name>
 </Button>
   <Button>
  <id>Send Mail to me</id>
  <name>发送密码到邮箱</name>
 </Button>
</Buttons>
<CheckBoxs>
 <CheckBox>
  <id>Login automatically</id>
  <name>自动登录</name>
 </CheckBox>
</CheckBoxs>
</Controls>

  

结果如上图. 其它页面亦如此.

时间: 2024-10-15 00:37:52

多语言系统的实现的相关文章

多语言系统的实现[转]

被老美卖掉后, 工作多了,工资涨得却少了,做不完的活, 现总算完成了手头上的紧急工作,上来写一下有关多语言系统的实现, 我们的做法是:如果系统只是简繁体,直接就可以用函数实现了. 因为他们具有一一对应关系,可是其它语言呢? 由于不具有语言的对照关系,只能分别写了. 最初的系统我们是采用写多个页面来实现,后面觉得这种方法不但工作量大,而且改功能的话,同一事情要重复劳动.后面我们就采用XML记录的方式来处理了. 不知各位大侠是如何做的呢? private void Page_Load(object

R语言 系统聚类分析1

#聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距离远近的一种度量 将距离近的对象#归入一类 不同类之间的对象距离较远#聚类分析根据分类对象不同分为Q型聚类分析(指的是对样本进行聚类) 和R型聚类分析(指的是对变量进行聚类) #距离和相似系数#聚类分析是研究对样本或变量的聚类 变量可以分为两类1定量变量 通常指的是连续量#2 定性变量(有序变量+名

对c语言系统库函数、堆排序、希尔排序、折半插入排序、快速排序消耗时间的比较

#include <stdio.h> #include <time.h> #define N 100000 /*库比较函数:qsort(int *base,int n,int struct_size,int (*compare)(const void *,const void *))中的比较函数*/ int compare(const void *first, const void *second) { if (*(int *)first > *(int *)second)/

自动识别当前语言系统

最近处理一款软件需要支持多语言系统,但是有时候希望程序运行的时候,需要UI显示的文字与当前系统语言一致,终于找到了一个API符合要求,现记录下来. #include <iostream> #include <windows.h> using namespace std; int main() { unsigned short cid = GetSystemDefaultLCID(); switch (cid){ case 0x0804: cout << "简体

各语言系统或编程接口中向量与矩阵存储的差异

*********文中用到的transpose()代表矩阵转置函数,mul()代表矩阵乘法. 本文试图解释DX,HLSL,CG,OpengGL,GLSL中关于矩阵运算及存储的一些模糊概念. 0,先弄清楚,用矩阵来变换行/列向量时,怎样的矩阵才是预期的. 假设有行向量p,列向量q,一个给定的[非对称矩阵]A可以用来变换p可以表示为mul(p,A)(这叫post-multiply),也可以用来变换q,表示为mul(A,q)(这叫pre-multiply). 但A通常只能代表一个预期的变换(比如旋转平

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗?至于程序部分,我选择了PHP语言编写的ZBLOG系统,而采用这套系统的朋友们都知道,当年可是有了不起的博客问世,那就是著名的月光博客,在2008年至2012年期间,月光博客可以说是中国十大名博之一,尤其是在科技行业,可以说无人超越,这种独立博客的访问量在那个时代算是名动一时,让人非常羡慕,而在按个时代,我也尝试过写点儿博客,而且那时候博主非常多,

【转】多语言系统的数据库设计

首先我们需要确认我们要做的系统,多语言到底是要做多少种语言,以后会不会要求增加更多的语言.比如我们做一个给中国大陆和纽伦新港使用的系统,可以确定的语言就是简体中文.繁体中文和英语,而且可以确定以后也不会增加语言.确定以后是否需要增加语言这一点很重要,决定了我们在数据库设计时,是否需要考虑多语上的扩展性. 先说下在数据库设计时,可以有以下方案实现多语: 一.为每个多语字段建立对应语言的字段列. 比如我们有一个客户表,记录了客户Id.客户名称.客户地址.客户电话等,其中客户名称和客户地址是多语的,而

python语言系统学习(四)

一.面向对象编程. 抽象出一个类对象: 根据类对象创建实例对象.(将某个类对象赋值给某个实例对象) dog = Dog("拉布拉多","旺财","3","很好") 通过实例对象,访问属性和方法.dog.breed  dog.run() 规则:每个单词的首字母大写,其余字母全部小写. 为了在创建实例后对其进行初始化(给实例对象绑定一些属性),需要创建名为__init__( )创建实例对象后就会自动调用这些特殊方法.指的是创建类对

go语言系统-从文件操作到单元测试

目录 文件操作 输入流和输出流 打开文件和关闭文件 使用的函数和方法 案例演示 读文件操作应用案例 写文件操作应用案例 判断文件是否存在 文件编程应用实例 拷贝文件 统计英文.数字.空格和其它字符数量 命令行参数 举例说明 flag包用来解析命令行参数 Json Json基本介绍 应用场景 Json数据格式说明 Jsnon数据在线解析 Json的序列化 应用案例 Json的反序列化 应用案例 单元测试 先看一个需求 传统的方法 传统方法的缺点分析 单元测试 基本介绍 快速入门 单元测试快速入门总