导航

在MOSS中使用Resource files(.resx)

Posted on 2008-02-06 21:03  zhalin  阅读(1125)  评论(1编辑  收藏  举报

当开发在MOSS多语言站点中使用的控件时,我们需要为各个不同的语言分别建立resource文件,比如这个站点支持英文跟中文, 那么我们建立2个resource文件:

myproject.en-US.resx (内容: greeting="你好")
myproject.zh-CN.resx (内容: greeting="hello")

命名规则是:<项目名>.<CultureName>.resx

CulturName有两部分组成: <language2>-<Country/region2>,具体可以参考msdn中
CultureInfo Class at:
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx

这两个resx文件我们要放到MOSS站点的目录里:C:\Inetpub\wwwroot\wss\VirtualDirectories\<YOUR_PORT>\App_GlobalResources

现在,我们可以用代码来访问这两个resource文件了。

ResourceManager rm = new ResourceManager("resources.myproject", Assembly.Load("App_GlobalResources"));
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
string greeting = rm.GetString("greeting", ci);

根据当前的实际culture,来读取相应的值。如果当前culture是中文那么返回“你好”,如果当前culture是英文则返回“hello”。
这种方法的前提是我们的resource文件保存在App_GlobalResources目录中。好处是以后随时可以改resource文件而不需要重新编译代码。

PS:我们也可以把resource文件打包成Satelite Assembly DLL,并以如下方式访问:
ResourceManager rm = new ResourceManager("<DLL_PROJECT_NAMESPACE>.myproject", Assembly.Load("<DLL_ASSEMBLY_NAME>"));
显然这种方式如果改变resource文件,则必须重新编译该DLL。