- 相关文章 (13)
- QBlog隐藏技巧 (2)
- 爱说说系列 (4)
- QBlog 开源发布 (3)
- QBlog版本发布 (8)
- QBlog 模板制作教程 (6)
- QBlog开发者视频教程 (6)
- 秋色园技术原理解析 (21)
- 啊哈
- スーパーコピーブランド専門ショップ時計 バッグ 財布N級品販売通販 全品送料無料!! 弊社は価値をつけてルイヴィトンを販売して、シャネル 、グッチなど。 ◆2018年は最も新型に人気があって、新しい素材の商品到着! 人気ブランド品大注目 ◆信用の第1、風格は多くて、品質は良いです! ◆運賃の無料(日本全国)が予約購入することを期待しています! ◆弊社の商品は絶対的な自信があります。 ぜひ、見てくださいね!! 海外スーパーコピーのスーパーコピー バッグ、アクセサリー スーパーコピー時計、貴金属の(リサイクル品)のスーパーコピー販売買取
- ルイヴィトン 財布スーパーコピー ようこそ ルイヴィトン スーパーコピー販売商店へいらっしゃいませ! 真心込めて最高 レベルのスーパーコピールイヴィトン偽物ブランド品をお届けしています。 安全税関対策+ 素早い配送+随時の在庫補給+丁寧な対応+スーパーコピー販売業界最低価格に挑戦 ! 当店は業界最高品質に挑戦!全商品はプロの目にも分からないルイヴィトン 財布スーパーコピーです。 ルイヴィトン財布コピー、ルイヴィトン 財布 ブランド偽物など世界 有名なバックコピー商品が満載! 当店のスーパーコピー商品は他店よりも質が高く、金額も安くなっております。 ご購入する度、ご安心とご満足の届けることを旨にしております よろしくお願いします ありがとうございます (*^__^*)
- 可以
- 不错,博主是大神,膜拜中
- 44
- 顶起来!一页文字,几载求索
- ACESS 我也是深恶痛绝,但还是不得不用
- 阿斯顿
- <label>上节回顾</label>
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(22743)
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(22428)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(21281)
- 调查:是否支持秋色园QBlog走进开源博客之路(19981)
- Windows7下如何安装部署秋色园CYQBlog站点(15364)
- 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)(14312)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(14061)
- 如何安装部署秋色园CYQBlog站点(13510)
- 秋色园QBlog技术原理解析:认识整站处理流程(二)(13315)
- 秋色园QBlog技术原理解析:Module之基类生命周期-页面加载(七)(12984)
- 调查:是否支持秋色园QBlog走进开源博客之路(32)
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(23)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(13)
- QBlog开发者视频教程:开篇-开发基础配置与系统运行(一)(13)
- CYQ.IIS 无需要安装IIS运行QBlog网站(13)
- Windows7下如何安装部署秋色园CYQBlog站点(12)
- 开源博客CYQ.Blog 秋色园QBlog 源码下载[免费开放24个下载码](11)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(10)
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(10)
- 如何安装部署秋色园CYQBlog站点(9)
文章回顾:
1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL
4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序
5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期
6: 秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六) --介绍基类生命周期内部业务
7: 秋色园QBlog技术原理解析:Module之基类生命周期-页面加载(七) --介绍界面html加载原理
8: 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八) --介绍html的内容是如何填充
ps:秋色园QBlog下载地址:http://www.cyqdata.com/download/article-detail-427
上节回顾:
上节 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八) 中,解析了页面html的内容是如何被填充的,及Set、SetFor、SetForeach小三俩如何简化开发的。
大伙看的看地很心动,本人写的写地很心痛
本节介绍:
少说闲话,且看下文:
一:多语言翻译原理解析
先回顾第七节:Page_PreLoad部分流程代码:
在第七节时,为大伙解析了如何正常加载html及CSS/图片路径的处理,本节,将补充多语言翻译的原理解析。
1:传统的多语言翻译
我曾经写过一篇文章:实战篇-简单多语言的实现,介绍了CYQ.Data.Xml下的MutilLanguage,在传统的aspx页面中,可实现如下方式的多语言翻译:
只要把需要翻译文字,替换成相同的语法标签,即可获得相应的多语言效果,这在很多人看起来已经很方便,而且也被广泛的使用着。
但是,还是得保守的说两句:
1.1:破坏了原有界面的浏览效果,修改过的界面,无法二次使用:
传统webform开发,不断用服务端控件、服务端语法、CMS中自创的标签语法入侵本属于html及传奇美工界的地盘,被入侵后的界面,不再属于美工所认知的html了。
后出来了MVC,没有ViewState被人们津津乐道着,不过还是没有改变服务端语法入侵html的习惯。
存在即合理,它带来的快速开发效果,为asp.net带来迅速的扩张....相当的迅速。
对于这点,我说的是比较保守,我并没有认为入侵不好,因为实际上,有很多项目快速开发来的要猛烈些。
除非,你能带来一种比入侵html更快速的开发方式,否则,就无法否定并改变它的存在。
1.2:一个页面充满了大量的这些标签,除了原开发人员,接手维护的人,也得犯傻,特别是E文不好之人,比如本人的说:
忽悠完大伙上面两点后,接下说点秋色园QBlog是怎么处理的:
2:秋色园QBlog的多语言翻译机制
秋色园QBlog是基于将html当成xml加载的方式来处理界面,操作html如xml般方便。
在XmlHelper的帮助下,需要获取某个节点或某批量节点时,那是相当的简单。
于是乎,有了如下的想法方法与做法:
看示例html标签:
<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:翻译的实现代码
{
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标签的节点
if (list != null && list.Count > 0)
{
string key = null;
for (int i = 0; i < list.Count; i++)
{
attr = list[i].Attributes["keyvalue"];
key = attr.Value;
list[i].Attributes["value"].InnerXml = _Language.Get(key);//翻译
list[i].Attributes.Remove(attr);//移除keyvalue属性
}
}
}
这么简单的代码相信各看客都看的懂的,就不多唠叨了,大伙看着给力就行了。
再上两张秋色园的Logo图充给点看头:
中文时:
E文时:
总结:
本节,解析了秋色园QBlog的多语言翻译机制:采用通过获取所有约定标签的节点,进行循环替换,从而一次解决了整站翻译问题。
同时,开创了一种新方法,把安插在开发人员身上多年的机械型翻译工作,一次性解放还给了美工界人员,并实现了相对进步一些的职责分离。
下节,将为大伙演示第八节的完整的示例,同时加入包括本节多语言的翻译内容,敬请关注。
下一篇:秋色园QBlog技术原理解析:页面内容填充及多语言翻译流程演示示例(十) --总结演示示例代码