WSS3.0 WebPart 多语言支持的实现

本文介绍WSS3.0支持的两种WebPart类型及其国际化实现方式。一种是WSS风格的WebPart,另一种是ASP.NET风格的WebPart。通过示例代码展示了如何为这两种WebPart提供多语言支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WSS3.0支持两中类型的WebPart:
wss风格的WebPart - 从 Microsoft.SharePoint.WebPartPages.WebPart继承;
asp.net风格的WebPart - 从  System.Web.UI.WebControls.WebParts.WebPart继承;

对wss风格的webpart,采用系统提供的Microsoft.SharePoint.WebPartPages.ResourcesAttribute指定资源字符串key,然后
重载LoadResource方法处理资源文件的加载,示例如下:
ResTestWP
[Guid("137b67b0-6155-40dc-bff0-4ab766c87e86")]
    
public class ResTestWP : Microsoft.SharePoint.WebPartPages.WebPart // System.Web.UI.WebControls.WebParts.WebPart
    {
        
public ResTestWP()
        
{
            
this.ExportMode = WebPartExportMode.All;
        }


        
protected override void Render(HtmlTextWriter writer)
        
{
            writer.Write(GetResourceString(
"avreport_report14_part2"));
        }


        
private string _Url;
        [WebBrowsable]
        [Personalizable]
        [Resources(Category 
= "AddWrkfl_PermManageList"
            Name 
= "AddWrkfl_PermManageList")]
        
public string Url
        
{
            
get return _Url; }
            
set { _Url = value; }
        }


        
public override string LoadResource(string id)
        
{    
            
return GetResourceString( id ) ;
        }


        
private string GetResourceString(string key )
        
{
            
const string resource = "wss"
            
//此处为资源文件名,这些资源文件放在App_GlobalResources,以wss.resx,wss.zh-CN.resx的规则命名
            
//wss为系统默认的资源文件,你可以用myresource.resx,myresource.zh_CN.resx来命名

            
string value = HttpContext.GetGlobalResourceObject(resource, key) as string;

            
if (value == null || value == "")
                
return key;
            
else
                
return value;
        }

       
    }

若是asp.netf风格的webpart,则实现稍微复杂一点,需要重新实现 CategoryAttribute, WebDisplayNameAttribute的相关方法:
ResTestWP
[Guid("137b67b0-6155-40dc-bff0-4ab766c87e86")]
    
public class ResTestWP : System.Web.UI.WebControls.WebParts.WebPart
    
{
        
public ResTestWP()
        
{
            
this.ExportMode = WebPartExportMode.All;
        }


        
protected override void Render(HtmlTextWriter writer)
        
{
            writer.Write(ResourceHelper.GetResourceString(
"avreport_report14_part2"));
        }


        
private string _Url;
        [WebBrowsable]
        [Personalizable]
        [ResWebDisplayName(
"AddWrkfl_PermManageList")]
        [ResCategory(
"AddWrkfl_PermManageList")]
        
public string Url
        
{
            
get return _Url; }
            
set { _Url = value; }
        }
     

       
    }


    
class ResourceHelper
    
{
        
public static string GetResourceString(string key )
        
{
            
const string resource = "wss"
            
//此处为资源文件名,这些资源文件放在App_GlobalResources,以wss.resx,wss.zh-CN.resx的规则命名
            
//wss为系统默认的资源文件,你可以用myresource.resx,myresource.zh_CN.resx来命名

            
string value = HttpContext.GetGlobalResourceObject(resource, key) as string;

            
if (value == null || value == "")
                
return key;
            
else
                
return value;
        }

    }


    
public class ResCategory : CategoryAttribute
    
{
        
public ResCategory( string key ) : base(key)
        
{ }

        
protected override string GetLocalizedString(string value)
        
{
            
return ResourceHelper.GetResourceString(value) ;         
        }

    }


    
public class ResWebDisplayName : WebDisplayNameAttribute
    
{
        
public ResWebDisplayName(string key) : base(key)
        
{ }


        
public override string DisplayName
        
{
            
get
            
{
               
return ResourceHelper.GetResourceString(base.DisplayName);
            }

        }

    }

通过以上的代码,可以实现WebPart编辑面板的多语言支持,webpart内部代码也可以通过 ResourceHelper.GetResourceString获取资源字符串.

其他的Attribute类也可用上面的方法重新实现。
以上示例代码的命名不是很规范,ResCategory 应改成 ResCategoryAttribute.
ResWebDisplayName 应改成 ResWebDisplayNameAttribute. 编辑器不好用啊,就不改了~

下载代码:
/Files/jianyi0115/ResTestWP.rar


转载于:https://www.cnblogs.com/jianyi0115/archive/2007/12/24/1013192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值