门户多语言方案-CommunityServer的多语言实现方案
CommunityServer(简称CS)的多语言实现方案同样是基于资源文件的,和DNN的区别在于,DNN是用的ASP.NET2.0的Localization和Resx资源文件,CS用的是自己定义的XML文件。下面我们以CS2.1为例,来了解CS中是如何进行多语言的配置和应用的,然后再进一步来深入分析CS的多语言的实现技术。
一、CS语言包的部署和使用
CommunityServer安装程序和相关语言包可以从http://www.communityserver.org下载,目前最高版本是2.1。CommunityServer的安装程序看起来非常酷,感觉有点像我们以前做的IMP简易版的安装程序,当然他们的部署Wizard的界面设计比我们要好一些,安装过程没什么好说的,一步步根据界面提示安装即可。接着把下载的语言包解压到cs安装目录\web\languages文件夹下,并修改languages.xml文件,注册刚添加的语言包,以中文(zh-CN)为例,修改后languages.xml文件如下:
然后,用户可以通过自己的默认语言来实现界面语言的切换。
(语言切换界面)
(语言切换后的界面效果)
当然,管理员也可以通过修改web\communityserver.config文件来设置整个站点的默认语言
把上图中的en-US修改为刚才添加的zh-CN即可把默认语言修改为简体中文。
二、CS的多语言技术分析
CS的多语言技术的实现思路分为两点,对于在页面上显示的字符串,首先要在资源文件(XML)中进行定义,然后在页面上放置资源控件(ResourceControl),在运行的时候根据语言设置来从不同资源文件中读取相应的字符串进行显示。下面我们分别针对这两点进行深入分析:
1、CS的语言包组成
CS语言包由一系列的资源xml文件和html组成,结构如下图所示:
docs: 目前只有faq页面
emails:emails.xml中定义了各种email模版的字符串资源
errors:一系列错误页面
data:(还不清楚)
ControlPanelResources.xml:定义ControlPanel目录下的各页面的字符串资源
FeedReader.xml:定义reader目录下个页面的字符串资源
FileGallery.xml:定义gallery目录下个页面的字符串资源
Messages.xml:定义系统提示文字的字符串资源
Resources.xm:定义公用的字符串资源
Templates.xml:定义一些文字模版的资源,如论坛回复等。
2、xml资源文件的定义方式
CS的资源文件采取类似key-的xml schema进行定义,非常简单,用记事本打开就能修改。
3、资源控件
CS的多语言展现是通过资源控件在运行时绑定资源文件实现的,如下图控制面板页面的标题就是在页面中通过资源控件绑定的。
(控制面板页面)
(ControlPanel/default.aspx页面中的ResourceControl定义)
三、DNN和CommunityServer的多语言实现方案对比
从功能上看,DNN的多语言管理功能要比CS强大得多,提供了在线的语言包的定义、编辑、导出和删除的功能。从技术上看,DNN采用了ASP.NET2.0的Localization技术,在常用控件上就能实现多语言的绑定,无须开发ResourceControl,而且Localization还实现了在design-time的显示,开发体验和原来直接写文字差别不大,比起整个页面都显示资源ID看起来要舒服很多。
All the posts in this blog are provided "AS IS" with no warranties, and confer no rights. Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 2.5 China Mainland License.