实战篇-简单多语言的实现

简介:

对于 秋色园 的多语言的实现,很多人都问了一下是怎么实现的,这里,给网友简单介绍一下。

 

实现多语言,通常有以下方式:

1:使用系统的资源文件进行翻译

2:读取外部文件进行翻译

3:利用google等外部站点介入进行翻译。

 

这里就简单介绍一下第二种:

 

读取外部文件进行翻译,也是秋色园使用的翻译方式。

 

外部文件,比较常用的就是Xml文件了,本节也用Xml进行介绍。

多语言其实不难,只要对xml中的节点或属性放好相应的字典key/Value,然后在界面读取进行翻译即可。

 

看一下一个简单的Xml字典:

复制代码
<? xml version="1.0" encoding="utf-8"  ?>
< root >
    
< div  id ="title"  eng ="英文标题"  cus ="自定义标题" > 中文标题 </ div >
    
< div  id ="autumn"  eng ="Autumn"  cus ="路过秋天" > 秋色园 </ div >
    
< div  id ="url"  eng ="http://www.cyqdata.com/english"  cus ="http://cyq1162.cnblogs.com" > http://www.cyqdata.com </ div >
</ root >
复制代码

这里每个id对应一个key/Value,为了实现多语言,用上了一些属性,这样可扩展更多的语言。

 

然后接下来的事?就是用读Xml文件,并将之显示到界面中。

 

下面用一段简单的示例代码来读取以上的Xml:

复制代码
        System.Xml.XmlDocument doc  =   new  System.Xml.XmlDocument();
        
try
        {
            doc.Load(Server.MapPath(
" Lang.xml " ));
            System.Xml.XmlNode node 
=  doc.SelectSingleNode( " //div[@id='title'] " );
            
if  (node  !=   null )
            {
                Response.Write(node.InnerText);
            }
        }
        
catch
        {
        }
复制代码

以上的代码将输出“中文标题”四个字,对大伙比较难掌握的就是上面的XPath部分语法了[大伙多查查资料就会了]。

 

因此,在以上的代码基础上,只要加以扩展,读取节点之后,根据不同的条件[Cookie/Session/Url参数等]判断,

输出不同的节点属性的值,即可获得不同语言的相应的输出如:

node.Attributes[ " eng " ].InnerText;
node.Attributes[
" cus " ].InnerText;

 

通过以上的方式,大伙已基本上可以自己实现一个自己的简单的多语言处理工作了,进行简单封装一下,一个易于使用的多语言类也可以自已写出来的。 

 

下面用CYQ.Data 数据框架 已封装好的多语言类来演示一个完整示例

 

1:新建网站项目:MutilLanguageDemo

 

2:接着项目添加引用 CYQ.Data 数据框架 V4.0版本 来实现对Xml的操作:

 

3:新建Lang.Xml,内容刚上面的xml内容。

 

最后项目截图如下:

 

这里演示用Cookie来设置语言版本,因此配置文件需要设置一下域名如下:

< appSettings >
     
< add  key ="Domain"  value ="localhost:9690" />
</ appSettings >

演示用的就是localhost:9690,你懂的。

 

下面是Default.aspx的前后台代码:

 

前台的html:

复制代码
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > 无标题页 </ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< asp:Button  ID ="btnChina"  runat ="server"  Text ="中文输出"  OnClick ="btnChina_Click"   />
        
< asp:Button  ID ="btnEnglish"  runat ="server"  Text ="英文输出"  OnClick ="btnEnglish_Click"   />
        
< asp:Button  ID ="btnCustom"  runat ="server"  Text ="自定义输出"  OnClick ="btnCustom_Click"   />
       
< p > html: <% = lang.Get( " autumn " %> </ p >
       
< p > cs : < asp:Label  ID ="labUrl"  runat ="server"  Text ="" ></ asp:Label ></ p >
    
</ div >
    
</ form >
</ body >
</ html >
复制代码

 

说明:

复制代码
1:有三个按钮,通过点击来切换语言。

2:标题,一个被切换成不同语言的标签。

3:使用语法获取如:
< %=lang.Get ("autumn") % >

4:服务端对控件赋值。
复制代码

 

 

后台CS代码:

复制代码
     protected  MutilLanguage lang  =   null // 定义全局变量
     protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  (lang  ==   null )
        {
            lang 
=   new  MutilLanguage(Server.MapPath( " Lang.xml " ),  false );
        }
        
if  ( ! IsPostBack)
        {   
// 设置页面标题和Lable
             this .Title  =  lang.Get( " title " );
            labUrl.Text 
=  lang.Get( " url " );
        }
    }
    
// 三个按钮设置Cookie后然后刷新界面。
     protected   void  btnChina_Click( object  sender, EventArgs e)
    {
        lang.SetToCookie(LanguageKey.China);
        Response.Redirect(Request.RawUrl);
    }
    
protected   void  btnEnglish_Click( object  sender, EventArgs e)
    {
        lang.SetToCookie(LanguageKey.English);
        Response.Redirect(Request.RawUrl);
    }
    
protected   void  btnCustom_Click( object  sender, EventArgs e)
    {
        lang.SetToCookie(LanguageKey.Custom);
        Response.Redirect(Request.RawUrl);
    }
复制代码

 

代码上面很简单,就不多说明了,通过Get方法,封装了Xpath语法部分,更易于使用。

 

接下来看一下最后的实现效果:

 

点击“中文输出”:

 

点击“英文输出”:

 

点击“自定义输出”:

 

最后提供下示例代码下载:点击进入下载页面

 


相关文章
|
5天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1904 5
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
13天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2507 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
13天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1362 2
|
11天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
1184 2
|
15天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1382 53
|
12天前
|
自然语言处理 测试技术 API
通义千问Qwen3.8-Max-Preview全功能解析:2.4万亿参数旗舰模型深度使用指南
在大模型技术持续迭代的当下,通义千问推出的Qwen3.8-Max-Preview作为新一代旗舰预览版模型,凭借2.4万亿参数的超大规模、多模态融合能力与全场景适配特性,成为开发者与企业用户探索AI应用的核心工具。该模型采用稀疏混合专家(MoE)架构,是通义千问首个突破万亿参数的多模态模型,可同时处理文本、图像、视频与文档等多种数据形态,在全栈代码开发、复杂逻辑推理、长文档分析与多智能体协作等场景实现跨越式升级。本文将全面拆解Qwen3.8-Max-Preview的核心功能,详解API调用流程与配置方法,覆盖多场景实战技巧,帮助用户快速掌握这款旗舰模型的使用方法,充分释放其性能潜力。
638 2
|
12天前
|
SQL 关系型数据库 MySQL
【2026最新】DBeaver下载、安装、数据库管理一篇搞定(附官网社区版安装包)
DBeaver是一款免费开源的跨平台通用数据库管理工具,支持MySQL、PostgreSQL、SQLite、Oracle等几乎所有主流数据库,无需为每种数据库安装独立客户端,极大提升开发与数据分析效率。