秋色园QBlog技术原理解析:页面内容填充及多语言翻译流程演示示例(十)

简介:
文章回顾:
 
 
上节回顾:
上一节  秋色园QBlog技术原理解析:独创的多语言翻译机制(九) 中,介绍了 秋色园QBlog的多语言翻译机制,
严重的解放了coder的劳动力,将翻译的职责分离给美工界。
事隔10来天,本篇接给力,为大伙演示一下完整的内容填充及页面翻译。
 
开始动手了:
 
一:整体介绍解决方案:
 
从上往下看,比上一个示例多了以下内容:
1:数据库一个:myspace.mdb,采用的是秋色园的的数据库,里面还存有不少数据。
2:Language.ashx:多语言处理程序,用来翻译用的。
3:UrlRewriteEntity:增加的静态内容项目,放了一条SQL和表枚举
 
OK,增加的东西并不多,其它的都是上次示例的内容了,不知道的回头看起吧。
 
二:多语言翻译
 
1:正如上节示例中,一次性的批量翻译代码:
        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标签的节点
            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属性
                }
            }
        }
 
2:HttpCustom业务流程里,需要增加调用翻译这么一行
        private void Page_PreLoad()
        {
            if (_Document.Load(Context.Server.MapPath("Skin/system_health/index.html")))
            {
                CssAndImg(_Document);
                Translate(_Document);
            }
        }
 
3:URL重写,将语言切换路径重定向到Lanuage.ashx处理程序中
        public void HttpUrlRewrite(HttpContext context)
        {
            string url = context.Request.Url.ToString();
            if (url.Contains(".css") || url.Contains(".jpg") || url.Contains(".png"))//放到css和jpg图片
            {
                return;
            }
            if (url.Contains("lang"))
            {
                context.RewritePath("~/Language.ashx", null, "url=" + url);
            }
            else
            {
                //--这里要做很多Url逻辑处理
                context.RewritePath("~/Default.ashx", null, "url=" + url);
            }
        }
 
4:Language.ashx处理一下,然后返回原来页面
public class Language : HttpCustom
{
    protected override void Page_Load()
    {
        string url = Request["url"];
        string lanKey = url.Substring(url.LastIndexOf('/')+1);
        Language.SetToCookie(lanKey.Substring(0, 1).ToUpper() + lanKey.Substring(1));
        Context.Response.Redirect(Context.Request.UrlReferrer.ToString());
    }
}
 
OK,多语言处理就算结束了,预览效果?不急,等把内容填充也一并完成先吧。
 
三:页面内容填充
 
1:创造类似CMS般的约定语法
示例:
<ul class="evt_hots_list" name="catelist" id="16" count="8">
      <li><a href=" http://www.cyqdata.com/">省略内容</a></li>
</ul>
说明:
1:catelist,一个约定的标签,名称分类列表
2:id,就是分类的id了。
3:count,就是循环多少条
4:Li那一行,装饰用的,因为最终它是被替换掉了。
总说明:任意标签只要加上catelist+id,都可以得到一个分类的循环输出,至于count就是可选项了。
 
2:整理HTML,按约定放好要显示分类的标签
例如:
<ul class="evt_plist" name="catelist" id="12" count="40">
 <!-- 健康·教育 -->
 <li><a target="_blank" title="路过秋天" href="#">教育</a></li>
 </ul>
 <ul class="evt_plist" name="catelist" id="13" count="40">
 <!-- 健康·和谐 -->
  <li><a target="_blank" title="路过秋天" href="#">和谐</a></li>
  </ul>
  <ul class="evt_plist" name="catelist" id="14" count="40">
  <!-- 健康·私语 -->
  <li><a target="_blank" title="路过秋天" href="#">私语</a></li>
   </ul>
这么稳妥的放几行,结果就是自动取分类id为12,13,14的内容填充列表了。
 
3:后台写一个通用的代码处理
OK,现在类似CMS的自填充功能也写好了,程序员也轻松,美工也轻松。
 
四:最终F5预览看效果
 
1:访问,内容列表出现了
 
2:英文翻译时
 
翻译只是翻译了界面,内容是没有翻译的,想翻译内容?自己写多一篇英文的文章吧,哈哈!
 
五:总结
本节做为一基础的总结性文篇,没有太多的细节文字解说,旨在为大伙提供一个整体流程的示例代码,重点在源码。
下节,将继续下一个流程,解析 秋色园QBlog 的Post提交机制。
 
六:源码下载
 
最后,就是大众期待的源码下载了。



     本文转自cyq1162 51CTO博客,原文链接:http://blog.51cto.com/cyq1162/519235 ,如需转载请自行联系原作者


相关文章
|
10月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1020 29
|
10月前
|
数据采集 安全 数据挖掘
淘宝天猫宝贝详情页面商品评论采集接口全解析
淘宝天猫商品评论采集接口为电商数据挖掘提供了重要工具。通过分析海量评论,消费者可获取购买决策参考,商家能优化产品与服务,市场研究者则能洞察行业趋势与竞品表现。该接口支持Python请求,助力开发者构建智能分析应用,推动电商生态中各方价值提升。使用时需遵守平台规则,确保数据安全与合法利用。
318 15
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
11月前
|
人工智能 文字识别 自然语言处理
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
765 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
11月前
|
数据采集 Web App开发 JavaScript
DOMParser解析TikTok页面中的图片元素
DOMParser解析TikTok页面中的图片元素
|
12月前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
477 12
|
数据采集 XML API
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
|
安全 编译器 Linux
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
本文深入解析了利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,通过分析FreeFlow FTP 1.75版本的漏洞,展示了如何通过构造过长的用户名触发缓冲区溢出并调用计算器(`calc.exe`)。文章详细介绍了攻击原理、关键代码组件及其实现步骤,并提出了有效的防范措施,如输入验证、编译器保护和安全编程语言的选择,以保障系统的安全性。环境搭建基于Windows XP SP3和Kali Linux,使用Metasploit Framework进行攻击演示。请注意,此内容仅用于教育和研究目的。
436 4
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手

热门文章

最新文章

推荐镜像

更多
  • DNS