Demo1: Sử dụng Resource
Tạo trang Default.aspx có trang master là AllSite.master
Tại trang AllSite.master, chèn source này vào:
<table>
<td align="left">
<asp:Label ID="lblSelLang" runat="server" Text="<%$ Resources:AllSite,lblSelLangResource1 %>"></asp:Label>
</td>
</tr>
<tr>
<td align="left">
<asp:DropDownList ID="comboSelLanguage" runat="server" AutoPostBack="True" meta:resourcekey="comboSelLanguageResource1"
OnSelectedIndexChanged="comboSelLanguage_SelectedIndexChanged">
<asp:ListItem>Choose ...</asp:ListItem>
<asp:ListItem Text="English" Value="en"></asp:ListItem>
<asp:ListItem Text="Việt Nam" Value="vi"></asp:ListItem>
<asp:ListItem Text="العربية" Value="ar"></asp:ListItem>
</asp:DropDownList>
</td>
</tr>
</table>
Tại trang AllSite.master, chèn code behind này vào:
protected void comboSelLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("SelLang");
cookie.Value = comboSelLanguage.SelectedValue ;
Response.SetCookie(cookie);
Response.Redirect(Request.UrlReferrer.AbsoluteUri); // this is for the redirecting to the referrer page
comboSelLanguage.SelectedValue = cookie.Value;
}
Trong trang Default.aspx, chèn source này vào(sử dụng để làm lời chào)
<asp:Label ID="Label1" runat="server" Text="<%$ Resources:AllSite,tt %>"
meta:resourceKey="TextDirection" ></asp:Label>
Nhớ định nghĩa Resources en và vi nhé.
Bằng cách tạo Resources File, đặt tên như AllSite.en và AllSite.vi
Điền định nghĩa vào
Demo2: Sử dụng XML
Tạo 2 file XML trong thư mục App_Data là vi và en
Trong vi.xml:
<?xml version="1.0" standalone="yes" ?>
<lan>
<obj ID="lblSelLang">
<Text>Chọn ngôn ngữ</Text>
</obj>
<obj ID="lblthongbao">
<Text>Chào bạn</Text>
</obj>
<obj ID="btclick">
<Text>Chạm vào đây</Text>
</obj>
<obj ID="lbltblh">
<Text>Chào các bạn nha</Text>
</obj>
</lan>
Trong en.xml
<?xml version="1.0" standalone="yes" ?>
<lan>
<obj ID="lblSelLang">
<Text>Chose language</Text>
<Type>Label</Type>
</obj>
<obj ID="lblthongbao">
<Text>Welcome</Text>
<Type>Label</Type>
</obj>
<obj ID="btclick">
<Text>Click here</Text>
<Type>Button</Type>
</obj>
<obj ID="lbltblh">
<Text>Welocme</Text>
</obj>
</lan>
Tạo class BL.cs trong App_Code để xử lý ngôn ngữ, có cookie lưu lại trang thái ngôn ngữ đã chọn
private static XmlDocument xmldoc;
private static XmlNodeList nodes;
protected override void InitializeCulture()
{
string lang = string.Empty;//default to the invariant culture
HttpCookie cookie = Request.Cookies["lan"];
if (cookie != null && cookie.Value != null)
{
lang = cookie.Value;
}
else
{
lang = "vi";
}
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath(@"App_Data/" + lang + ".xml"));
nodes = xmldoc.GetElementsByTagName("obj");
base.InitializeCulture();
}
public static string GetText(string objid)
{
string noidungtrave = "";
foreach (XmlNode no in nodes)
{
if (no.Attributes.Item(0).InnerText == objid)
{
noidungtrave = no.ChildNodes[0].InnerText;
break;
}
}
return noidungtrave;
}
Trong trang MasterPage.master:
<asp:Label ID="lblSelLang" runat="server"></asp:Label><br />
<asp:Label ID="lblthongbao" runat="server" Text="Label"></asp:Label>
<asp:Button ID="btclick" runat="server" Text="Button" />
<asp:ImageButton ID="ImageButton1" runat="server" OnClick="chonngonngu"
ImageUrl="~/Images/vi.gif" />
Code behind MasterPage.master.cs:
protected void Page_Load(object sender, EventArgs e)
{
lblSelLang.Text = BasePage.GetText(lblSelLang.ID);
lblthongbao.Text = BasePage.GetText(lblthongbao.ID);
btclick.Text = BasePage.GetText(btclick.ID);
}
public void chonngonngu(object sender,EventArgs e)
{
HttpCookie c = Request.Cookies["lan"];
if (c == null)
{
HttpCookie ci = new HttpCookie("lan");
ci.Value = ConfigurationManager.AppSettings["lan"];
ci.Expires = DateTime.Now.AddMinutes(1);
Response.Cookies.Add(ci);
Response.Redirect(Request.UrlReferrer.AbsoluteUri);
}
else
{
if (c.Value=="vi")
{
c.Value = "en";
ImageButton1.ImageUrl = "~/Images/vi.gif";
}
else
{
ImageButton1.ImageUrl = "~/Images/en.gif";
c.Value = "vi";
}
c.Expires = DateTime.Now.AddMinutes(1);
Response.SetCookie(c);
Response.Redirect(Request.UrlReferrer.AbsoluteUri);
}
// this is for the redirecting to the referrer page
}
Trong trang Default.aspx thừa kế trang MasterPage.master:
<asp:Label ID="lbltblh" runat="server" Text="Label"></asp:Label>
Trong Code Behind Default.aspx.cs:
lbltblh.Text = BasePage.GetText(lbltblh.ID);