Loachs-代码分析之--多语言方案

本以为多语言很难实现,现在使用了Nvelocity之后,发现其实很容易就解决了。
告诉我一个道理:对于一个你不知道怎么弄的东西,不要仅思考,动手开始操作你知道的东西
不经意之间,你本以为很难的东西,结果就轻而易举的搞定了

我将多语言的变量使用大写来定义,这个参考了 Zencart程序
语言包的格式,参考了另一个程序,采用XML的格式
起初定的语言包的定义是
<item key="" value=""></item>
这样定义有一个缺点 就是不能够引入 html的格式,这样就不能实现图片的多语言
如果非要使用这个,就需要将字符转为Unicode字符,这样的话可观性就降低了
所以后来 看了另一套程序发现
格式不应该这样定义
改为下面的格式
 <item key="">
    <value>html字符​</value>
 <item>
这样的话仅仅 需要多HTML字符做一些转义的工作就可以了
保证了一定的可读性。比较靠谱

问题:页面多语言是怎么实现的?

第一步:当页面第一次加载的时候,页面中会创建一个Cookie,这个cookie会读取默认的语言包
并加载默认的语言,从而生成HTml的代码,响应到客户端,此时服务端的工作就完成了

第二步:当HTML代码到达客户端之后,就是js脚本的天下了,此时页面会加载完毕,将会执行一个函数
从响应的Cookie中获得语言的名字并 赋值 到选择框里面。

第三步:切换语言的过程
切换语言的过程是从客户端发起的发起的,通过select 的change函数,先获得当前的语言cookie选项
然后删除cookie,在创建一个新的cookie,并写入到当前值。此时使用js重写刷新页面。
至此客户端脚本的工作就完成了

第四步:当新的请求到达服务端之后,会检查请求中cookie所带的语言cookie值,此时就又到了第一个过程
如果检查到cookie之是空的 就使用默认的语言值。如果cookie之不为空,就会获得当前的cookie值
重新加载语言包,生成新的HTML,响应到客户端去,接下来的过程就可第二个过程一样了。

表面上看来我们通过js的脚本,来完成了一次 客户端和服务端的 交互,使用cookie,保存了
交互过程中的状态信息,window.location.reload(true) 作为了一次通信的中介
在整个过程当用我们并没有用到ASP.NET页面的视图,也没有用到所谓的控件
就是请求和响应,让ASP.NET回归到了最本质的状态。完全站在请求与响应的角度上
来处理Web的请求
知道了这一次点,那么查询字符串,隐藏字段和表单信息 等等 这些的使用都是一样的
只不过方式不同而已。所以当脱离的ASP.Net所有的页面和控件的使用
请求和响应就变得非常的简单了,而且也非常的灵活。
那么回过头来我们考虑两个问题
问题1.加入我现在要和Web端进行通信交互,我在客户端应该使用什么来完成呢?
用ajax
问题2.如果我们清楚了上面的这个问题,那么请问ASP.NET页面的这种 事件驱动模型
是如何和后端进行通信的呢?简单一点描述
当你在页面上点击一个按钮时,这个按钮时如何调用服务端相关的代码的,这一点击背后
发什么故事呢?大家有没有想过这个问题呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值