还记得在VS2003中,本地化特别是全局本地化文件,并没有预想当中的方便。
VS2003默认的本地化策略是页面级资源文件,但由于这种文件在 VS2003中资源管理器中的布局是跟着aspx文件的,使得维护很不方便,如果你要改一个资源,首先必须知道资源所应用到的文件,再来就是资源的名称, 很多情况下,我们往往会因为资源太多,而漏掉几个需要维护的资源。出于这个原因,程序员们开始考虑使用全局资源文件(Global Resources File),但由于当时在VS2003中没有专用的设计器,且调用资源必须使用ResourceManager,使得一些初学者望而却步,无形中提高了技 术门槛。
这次的VS2005则完全改变了这种局面,这在VS2005的资源管理器中最容易体现——加入了 App_GlobalResources(全局资源)和App_LocalResources(本地资源)。正因为有了这两个文件夹,你的所有页面的资源 不再是跟着页面走了,任何一个页面的资源都会直接被加到App_LocalResources目录下,这样就使页面级资源文件管理变得相对简单。
值 得一提的是,这次还在Tools菜单中加入了Generate Local Resource项,注意该项仅在设计视图(Design View)下可见。通过该项,你可以把一个页面中的所有控件的资源自动生成,资源会放在当前页面对应的本地资源文件中,命名是你的控件名称+'.'+属性 名称,例如:有一个Label的ID为Label1,则生成的资源有Label1.Text, Label1.ToolTip,资源的值就是你生成时的Text的值和ToolTip的值,如果没有则为空。生成完成后,你会发现控件已自动与资源绑定, 这可以体现在两个方面,第一,在属性编辑器(Properties)中,控件的Text和ToolTip没有了值,取而带之的是多了一个浅红色的图标,表 示资源已绑定;第二就是在aspx的编码界面中,控件的标记属性中多了一个meta:resourcekey=“[资源名]”。另外,VS2005的资源 编辑器也比原来VS2003的方便,不再是通用的xml编辑窗口了,有了许多资源编辑器本应该有的功能,如添加图片、添加文本文件、添加声音文件等,看来 以后网上的第三方资源编辑器要没市场了
。
再来看全局资源。全局资源文件不会自动被添加,但是我们可以自己建,也不会自动被绑定(否则岂不成了VS2005 AI版
)。 当你加完资源后,回到代码编辑界面,你会发现Resources的智能感知会把资源文件名显示出来让你选择,实在是方便,例如有个资源文件叫Res1,其 中有一个String资源叫Text1,你就可以用Resources.Res1.Text1来获得它的值。看到这样的功能,再看看原来自己搭的 VS2003资源维护框架,不免觉得有些郁闷
。这样做的好处很容易想到,一方面资源找起来方便,另一方面资源名不容易打错。或许你会觉得有些好笑,资源名怎么会打错,对于几十个资源来说,这或许是可笑的错误,但当资源增加到数百个甚至上千个,这种事情很容易发生。
不 过,这次使用后,也发现了一些不足的地方,但是个人觉得从技术角度实现的确比较麻烦。比如,如果在使用过自动生成资源后,控件改名了,如果再次自动生成资 源,VS2005会重建一个资源,而不是把原来的资源删掉,这样可能造成无用资源的堆积,特别是在多次的后期维护之后,当然可能是我要求高了点,大家不要 见怪。
总的来说,我对这次的VS2005的本地化功能还是很认可的,甚至有些感慨,开发工具能做到如此方便易用,真可谓是以用户为导向,或者说以应用为导向,在这方面,中国的程序员应该好好向微软的同仁们学习。
由于时间仓促,还没有来得及看基于数据库的资源支持情况,过两天再说吧。