文章回顾:
上节回顾:
大伙看的看地很心动,本人写的写地很心痛
本节介绍:
少说闲话,且看下文:
一:多语言翻译原理解析
在第七节时,为大伙解析了如何正常加载html及css/图片路径的处理,本节,将补充多语言翻译的原理解析。
1:传统的多语言翻译
<p>html:<%=lang.get("autumn") %></p>
只要把需要翻译文字,替换成相同的语法标签,即可获得相应的多语言效果,这在很多人看起来已经很方便,而且也被广泛的使用着。
但是,还是得保守的说两句:
1.1:破坏了原有界面的浏览效果,修改过的界面,无法二次使用:
传统webform开发,不断用服务端控件、服务端语法、cms中自创的标签语法入侵本属于html及传奇美工界的地盘,被入侵后的界面,不再属于美工所认知的html了。
后出来了mvc,没有viewstate被人们津津乐道着,不过还是没有改变服务端语法入侵html的习惯。
对于这点,我说的是比较保守,我并没有认为入侵不好,因为实际上,有很多项目快速开发来的要猛烈些。
除非,你能带来一种比入侵html更快速的开发方式,否则,就无法否定并改变它的存在。
1.2:一个页面充满了大量的这些标签,除了原开发人员,接手维护的人,也得犯傻,特别是e文不好之人,比如本人的说:
曾经接手过一个社区型项目:几十个没源码的dll、大量的<%多语言%>标签混杂在html中、各模式混杂多种代码风格语法[linq、lamb语法等],折磨了我一个月后,老板说我开发速度太慢,拿了个新手当示例说新手的开发进度都比我快,于是,我走了。
于是乎,有了如下的想法方法与做法:
看示例html标签:
<h2 key="healthcare">健康·保健</h2>
<li><a href="/" key="index">首页</a></li>
<input keyvalue="submit" type="submit" name="btnpost" value="提交" class="button button_style" />
说明:
从上面的三个标签中,一看就知道非常明确的知道标签是显示什么内容,
没有影响原始html标签的预览效果,只是像xml般增加了两个自定义属性:key、keyvalue。
小小两个标签,却能完成秋色园整站多语言的翻译需求,如何做到?且看以下介绍:
1:翻译关键字的约定
key:key="id",从同目录的language.html中寻找id节点的文字,翻译key节点内部的文本内容
keyvalue:key="id",从同目录的language.html中寻找id节点的文字,翻译keyvalue节点的value属性的文本内容
掌握了上面两个翻译key,即可以在任意界面html中放置标签,如上面示例html一样
顺便唠叨几句:
这界面翻译的活,应归属美工界的管理处理范围。
什么界面多语言翻译,开发人员就不要抢着瞎折腾了。折腾一堆的<%多语言%>,大伙看着都难受。
没办法就忍着,现在有办法了,能省心就多省点。
不过,开发人员要想省力又省心,还得在基类里,写下这么一小段代码的:
2:翻译的实现代码
private void translate(xmlhelper doc)
{
system.xml.xmlnodelist list = doc.getlist("*", "key");//获取所有带key标签的节点
system.xml.xmlattribute attr = null;
if (list != null && list.count > 0)
{
string key = null;
for (int i = 0; i < list.count; i++)
{
attr = list[i].attributes["key"];
key = attr.value;
list[i].innerxml = _language.get(key);//翻译
list[i].attributes.remove(attr);//移除key属性
}
}
list = doc.getlist("*", "keyvalue");//获取所有带keyvalue标签的节点
attr = list[i].attributes["keyvalue"];
list[i].attributes["value"].innerxml = _language.get(key);//翻译
list[i].attributes.remove(attr);//移除keyvalue属性
}
这么简单的代码相信各看客都看的懂的,就不多唠叨了,大伙看着给力就行了。
中文时:
e文时:
总结:
同时,开创了一种新方法,把安插在开发人员身上多年的机械型翻译工作,一次性解放还给了美工界人员,并实现了相对进步一些的职责分离。
下节,将为大伙演示第八节的完整的示例,同时加入包括本节多语言的翻译内容,敬请关注。
版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:
http://www.cnblogs.com/cyq1162/archive/2011/03/04/1970852.html