چگونگی ایجاد یک application چند زبانه در asp.net

شنبه 3 آبان 1393

در این مقاله یاد می گیریم چگونه یک application چند زبانه در asp.net ایجاد کنیم

چگونگی ایجاد یک application چند زبانه در asp.net

به عکس های زیر نگاه کنید:

همان طور که مشاهده می کنید عکس ها ی بالا نشان دهنده این واقعیت است که می توان application های چند زبانه ایجاد کرد اما چگونه:

مرحله یک:

یک master page  به نام site1.master ایجاد کنید و منو را طراحی کنید و برای انتخاب زبان از یک dropdown استفاده کنید.

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="MultilanguageSample.Site1" %>   
<!DOCTYPE html>  
<html xmlns="http://www.w3.org/1999/xhtml">   
<head runat="server">   
    <title></title>   
    <style type="text/css">   
        html {   
            font-family: Tahoma;   
            font-size: 14px;   
            font-style: normal;   
            background-color: Silver;   
        }   
    
        .Content {   
            margin: auto;   
            width: 700px;   
            background-color: white;   
            border: Solid 1px black;   
        }   
        .auto-style1 {   
            width: 100%;   
        }   
    </style>   
    <asp:ContentPlaceHolder ID="head" runat="server">   
    </asp:ContentPlaceHolder>   
</head>  
<body>   
    <form id="form1" runat="server">   
        <div class="Content">   
        <br />   
            <table class="auto-style1">   
                <tr>   
                    <td style="background-color: #339966"> <a href="Default.aspx">   
                <asp:Label ID="Label1" meta:resourcekey="menuItemDefault" runat="server" Text="Home"></asp:Label>   
            </a></td>   
                    <td style="background-color: #339966; " ><a href="Contact.aspx">   
            <asp:Label ID="Label2" meta:resourcekey="menuItemContact" runat="server" Text="ContactUs"></asp:Label>   
        </a></td>   
                    <td style="background-color: #339966;"><asp:DropDownList ID="DropDownList_Language" runat="server" Height="20px" Width="170px"   
            OnSelectedIndexChanged="DropDownList_Language_SelectedIndexChanged" AutoPostBack="true">   
            <asp:ListItem Value="en-US">English</asp:ListItem>   
            <asp:ListItem Value="sv-SE">Swedish</asp:ListItem>   
        </asp:DropDownList></td>   
                </tr>   
            </table>   
        <br />   
        <br />   
    
        <div>   
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">   
            </asp:ContentPlaceHolder>   
        </div>   
        </div>   
    </form>   
</body>   
</html>  

 

مرحله دو:

نوشتن code behind به شکل زیر است:

using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Web;   
using System.Web.UI;   
using System.Web.UI.WebControls;   
    
namespace MultilanguageSample   
{   
    public partial class Site1 : System.Web.UI.MasterPage   
    {   
          
        protected void Page_Load(object sender, EventArgs e)   
        {   
            if (Session["language"] != null && !IsPostBack)   
            {   
                DropDownList_Language.ClearSelection();   
                DropDownList_Language.Items.FindByValue(Session["language"].ToString()).Selected = true;   
            }   
        }   
        protected void DropDownList_Language_SelectedIndexChanged(object sender, EventArgs e)   
        {   
            switch (DropDownList_Language.SelectedValue)   
            {   
                case "en-US": this.SetMyNewCulture("en-US");   
                    break;   
                case "sv-SE": this.SetMyNewCulture("sv-SE");   
                    break;   
                default:   
                    break;   
            }   
            Response.Redirect(Request.Path);   
        }   
    
        private void SetMyNewCulture(string culture)   
        {   
            Session["language"] = culture;   
        }   
    }   
}  

توجه:در این جا میتوانید با استفاده از JavaScript انتخاب زبان کاربر را در cookie یا Local Storage در HTML5 ذخیره کنید.

مرحله سه:

یک فولدر به نام “App_LocalResources اضافه کنید و recource ها مثل Site.master.resx برای زبان انگلیسی و Site1.Master.sv. resx  را برای زبان سوئدی اضافه کنید.

توجه:برای حفظ مراقبت بیشتر برای هر صفحه فایل resource را جداگانه نگه دارید.

master page

مرحله چهار:

متد زیر را به فایل global.asax اضافه کنید.

void Application_AcquireRequestState(object sender, EventArgs e)   
{   
      HttpContext context = HttpContext.Current;   
      if (context.Session["language"] != null)   
      {   
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(context.Session["language"].ToString().Trim());   
            Thread.CurrentThread.CurrentCulture = new CultureInfo(context.Session["language"].ToString().Trim());   
      }   
}  

این متد برای گرفتن وضعیت فعلی session استفاده می شود.

مرحله پنج:

resource key را در lable صدا کنید.


    <asp:Label ID="Label1" meta:resourcekey="menuItemDefault" runat="server" Text="Home"></asp:Label>   

شما همچنین می توانید فایل recource را  در c# همانند زیر صدا بزنید:


    protected void Page_Load(object sender, EventArgs e)  
    {  
    lblMsg.Text = GetLocalResourceObject("lblMsgHome.Text").ToString();  
      
    }  

 

فایل های ضمیمه

جعفری

نویسنده 22 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید