mfethod:
1.先作個 SElect Language.aspx
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" meta:resourcekey="Button1Resource1" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource1"></asp:TextBox>
<asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource1" Text="Label"></asp:Label></div>
<asp:Button ID="Button2" runat="server" Text="<%$resources: global, String1%>" OnClick="Button2_Click" />
</form>
2.selectLanguage.aspx.cs:
public partial class SelectLanguage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Button2.Text = Resources.global.String1;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
if (Session["PreferredCulture"] == "en-us")
{
Session["PreferredCulture"] = "zh-cn";
}
else if(Session["PreferredCulture"]=="en-us")
{
Session["PreferredCulture"] = "en-us";
}
Response.Redirect(Request.Url.PathAndQuery);
}
}
3.寫基類ResourceManager.cs
public class ResourceManager
{
public ResourceManager()
{
//
// TODO: Add constructor logic here
//
}
public static string GetString(string name, string userLanguages)
{
//通過指定屬性名返回包含此屬性名相關信息的hash表
Hashtable source = LoadSource(userLanguages);
//如果hash表不等於null就將其值返回
if (source != null)
{
return source[name].ToString();
}
else
{
return "";
}
}
//獲取語言語句字典
public static Hashtable LoadSource(string userLanguages)
{
//獲取xml文件存放的物理路徑
string pathFile = System.Web.HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath + "/Languages/" + userLanguages + "/Resources.xml");
//創建一個xmldatadocument對象
System.Xml.XmlDataDocument lagXml = new XmlDataDocument();
//加載其要操作的xml文件
lagXml.Load(pathFile);
//聲明一個hash表
Hashtable supportedLanguages;
//創建hash表
supportedLanguages = new Hashtable();
//獲取xml文件中root節點下的所有子節點
foreach (XmlNode xn in lagXml.SelectSingleNode("root").ChildNodes)
{
//如果不是註釋就將子節點屬性值和節點文本以鍵/值對形式存放到hash表裏
if (xn.NodeType != XmlNodeType.Comment)
{
supportedLanguages.Add(xn.Attributes["name"].Value, xn.InnerText);
}
}
return supportedLanguages;
}
}
4.寫配製Web.Config
<system.web>
<anonymousIdentification enabled="true"/>
<profile>
<properties>
<add name="LanguagePreference" type="string" defaultValue="auto" allowAnonymous="true" />
</properties>
</profile>
</system.web>
5.global.asax
<%@ Application Codebehind="Global.asax.cs" Inherits=" TangramMiniWeb.Global" %>
global.asax.cs
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//CultureInfo類表示有關特定區域性的信息,提供信息的區域性特定對象的訪問
ultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
//CurrentCulture屬性用來獲取或設置當前線程的區域性
Thread.CurrentThread.CurrentCulture = cultureInfo;
//CurrentUICulture屬性用來獲取或設置資源管理器使用的當前區域性以便在運行時查找區域性特定的資源
Thread.CurrentThread.CurrentUICulture = cultureInfo;
}
6.建立頁面的資源文件:
global.resx
global.en-us.resx
selectlanguage.resx
selectlanguage.en-us.resx
7.其他頁面的繼承的東西
比如:ablut.aspx.cs
public partial class tan_About :ResourceManager
{
public void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//
}
}
}
最後就是作資源文件了:
ablut..aspx.resx // add chinese value
ablut.aspx.en-us.resx //add english value
thank you