Cấp bậc tác giả:

DOTNET

Đa ngôn ngữ trong Asp.Net

Được viết bởi QuangIT ngày 07/04/2013 lúc 11:16 PM
Hai Demo sử dụng Resource và XML
  • 0
  • 3624
Tải tệp tin: Click ở đây

Đa ngôn ngữ trong Asp.Net


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>

chooselanguage.jpg

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

chooselanguage2.jpg

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);

chooselanguage3.jpg

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML