一直对本地化挺有兴趣。原来也做过类似的工作。但一直都觉得做得不好。所以很想看看
DNN
是怎么做得。在
DNN
的文档中
/Documents/DotNetNuke Localization
看了一下。觉得这篇文章写得很好。然后又特意去查了下
MSDN
。结果查到了这篇文章
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vbwlkwalkthroughlocalizingwebforms.asp
。可以看做是
.net
平台上
web
本地化的一个入门教程。
DNN
利用了
.net
中的
RSCX
文件来存放各语言的内容。但
DNN
获取
Rscx
中内容的方法并不像上面
MSDN
中的文章那样,利用
.net
提供的功能类来做。而是用了操作
XML
文档的方法。从
Localization
类的
GetString
方法入手,一路转跳。可以了解
DNN
是如何操作的。但我不明白的是为什么不还利用
.net
提供的功能类。在
DNN
的文档中说是为了兼容
Asp.net2.0
而这样设计。还没有开发过
Asp.net2.0
的项目。所以没有体会到它的苦心。
在为控件本地化上,
DNN
为每个需要本地化的控件添加了一个
resourcekey
值。觉得这样做比在后台类中为各控件一一赋值更为灵活更易修改。也减轻了编码的困难。另外,如果不方便添加
resourcekey
的控件和其他一些地方的本地化,也可以调用
GetString
和其他
API
。使得本地化变得更为简单。呵呵。又学到一点。但是我一直找不到哪个类是完成这个赋值,望指点。
在
DNN
的
localization
系统中。可以看到一个
FallBack
的概念。大家可以看看
Localization
类中的
GetResource方法以及它的注释。觉得挺有意思的。
看完这个系统后。给我的体会是,做一个系统时,不但要思考你过去做这个功能用过什么样的方法。还有特别注意你所用的平台对这个功能提供了什么特定的接口。像Localization你可以用文本,数据库来存放语言信息。但.net平台下,一个首先应该考虑的是利用rscx文件来存放。所以说,虽然平台之间可以触类旁通,但如果想真正做得十分优秀,必须对你所用的平台做到十分的了解和专精。另外。在完成功能类后,应该更多考虑不同的UI。提供更为丰富和灵活的接口。
本文转自 duguguiyu 51CTO博客,原文链接:http://blog.51cto.com/duguguiyu/361754,如需转载请自行联系原作者