WebPart多語言的實現:
WPResource.cs
View Code
using System;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using System.ComponentModel;
using System.Web;
namespace WebPartCollection.Common
{
public static class WPResource
{
const string RESOURCE_FILE_NAME = "Anson";
/// <summary>
/// 擷取資源字串的值
/// </summary>
/// <param name="key">資源字串key</param>
/// <returns></returns>
public static string GetString(string key)
{
try
{
string value = "" + HttpContext.GetGlobalResourceObject(RESOURCE_FILE_NAME, key);
//value = ""+HttpContext.GetGlobalResourceObject(RESOURCE_FILE_NAME, key, System.Threading.Thread.CurrentThread.CurrentCulture);
if (value == "")
return key;
else
return value;
}
catch (Exception ex)
{
throw new SPException("access resource file [" + RESOURCE_FILE_NAME + "] error,please confirm files in App_GlobalResources.", ex);
}
}
}
/// <summary>
/// 屬性分類,名稱從資源中擷取
/// </summary>
public class ResCategoryAttribute : CategoryAttribute
{
public ResCategoryAttribute(string key)
: base(key)
{ }
protected override string GetLocalizedString(string value)
{
return WPResource.GetString(value);
}
}
/// <summary>
/// 屬性顯示名,從資源中擷取
/// </summary>
public class ResWebDisplayNameAttribute : WebDisplayNameAttribute
{
public ResWebDisplayNameAttribute(string key)
: base(key)
{ }
public override string DisplayName
{
get
{
return WPResource.GetString(base.DisplayName);
}
}
}
public class ResConnectionProviderAttribute : ConnectionProviderAttribute
{
public ResConnectionProviderAttribute(string name) : base(name)
{
}
public ResConnectionProviderAttribute(string name,string id) : base(name,id)
{
}
public override string DisplayName
{
get
{
return WPResource.GetString(base.DisplayName);
}
}
}
public class ResConnectionConsumerAttribute : ConnectionConsumerAttribute
{
public ResConnectionConsumerAttribute(string name)
: base(name)
{
}
public ResConnectionConsumerAttribute(string name, string id)
: base(name, id)
{
}
public override string DisplayName
{
get
{
return WPResource.GetString(base.DisplayName);
}
}
}
}
WebPart檔案代碼:
View Code
using System;
using System.Runtime.InteropServices;
using System.Web.UI.WebControls.WebParts;
using WebPartCollection.Common;
namespace WebPartCollection
{
[Guid("c91e5b6c-702f-4716-b4df-2d70858e57cc")]
public class MutilanguageWebPart : System.Web.UI.WebControls.WebParts.WebPart
{
public MutilanguageWebPart()
{
}
private string _URL;
[WebBrowsable,Personalizable]
[ResCategory("XMLURL")]
[ResWebDisplayName("XMLURL")]
public string URL
{
get { return _URL; }
set { _URL = value; }
}
protected override void CreateChildControls()
{
base.CreateChildControls();
}
}
}
最後一步,建立兩個資源檔,分別是Anson.resx和Anson.zh-CN.resxy,在兩個兩個檔案添加key為XMLURL,及value,最後儲存,把這兩個檔案放連接埠下的App_GlobalResources檔案夾,如90\App_GlobalResources