Dotnetnuke在asp.net2.0的本地化做了很多,其中要介绍的一个类是DotNetNuke.Services.Localization.Localization.GetString(),它可以加载资源文件里的字符串(当然,还有其他的Get...(),大家可以自己研究)。之前试图通过GetLocalResourceObject获得资源,在独立的网站页面里可以通过,但在Dotnetnuke的模块ascx开发中却总是行不通。后来比较DotNetNuke的代码,发现DotNetNuke中都是使用Localization.GetString()来实现,这个方法可以获得资源,实现本地化。下面分本地和全局资源来介绍:
读取本地资源
需要注意的是这个方法的name参数需要额外的.Text才能得到资源,比如我在资源文件中加入一个键值是MyMessage的资源字符串,通过下面代码就得不到:
而将资源文件中的键名改为:MyMessage.Text,再通过下面代码就能得到,
这个不知道是否是Bug还是有其他限制。
读取全局资源
在Dotnetnuke中提供了2个全局资源文件:GlobalResource, SharedResource,可以调用
Dotnetnuke.Services.Localization.Localization.GetString(...., GlobalResourceFile)读取全局资源,可是有时候我们需要增加自己的全局资源文件,可以通过下面方式读取:
读取本地资源
需要注意的是这个方法的name参数需要额外的.Text才能得到资源,比如我在资源文件中加入一个键值是MyMessage的资源字符串,通过下面代码就得不到:
Localization.GetString(
"
MyMessage
"
, LocalResourceFile)
;
而将资源文件中的键名改为:MyMessage.Text,再通过下面代码就能得到,
Localization.GetString(
"
MyMessage.Text
"
, LocalResourceFile);
这个不知道是否是Bug还是有其他限制。
读取全局资源
在Dotnetnuke中提供了2个全局资源文件:GlobalResource, SharedResource,可以调用
Dotnetnuke.Services.Localization.Localization.GetString(...., GlobalResourceFile)读取全局资源,可是有时候我们需要增加自己的全局资源文件,可以通过下面方式读取:
Localization.GetString(
"
NotFoundPageSettings.Error
"
,
Localization.ApplicationResourceDirectory + " /MyGlobalResources.resx " )
Localization.ApplicationResourceDirectory + " /MyGlobalResources.resx " )