Asp.net 2.0實現多語言

來源:互聯網
上載者:User
1.建立一個asp.net web應用程式

2.建立的項目如所示

3.右擊web項目名稱,添加一個全域資源檔夾"app_GlobalResources" ,這個是asp.net 2.0特有的

4.右擊"app_GlobalResources"檔案夾,添加兩個資源檔: language.resx(簡體資源檔)  和language.en-us.resx (英文的資源檔)

5.開啟兩個資源檔,添加相應的資源資訊,如所示

6.開啟default.aspx檔案,輸入如下代碼:
<body>
    <form id="form1" runat="server">
    <center>
        <div style="margin: 20px; padding: 10px; height: 200px; width: 200px; border: solid 1px #C0C0C0;
            text-align: center;">
            <br />
            <a href="?curlanguage=zh-cn">中文</a> &nbsp;
             <a href="?curlanguage=en-us">英文</a>
            <br />
            <br />
            國家:&nbsp;<asp:Literal ID="ltlcountry" runat="server"></asp:Literal>
            <br />
            城市:&nbsp;<asp:Literal ID="ltlcity" runat="server"></asp:Literal>
           
             <br />
            <br />
            國家2:&nbsp;<asp:Literal ID="ltlcountry2" runat="server"></asp:Literal>
            <br />
            城市2:&nbsp;<asp:Literal ID="ltlcity2" runat="server"></asp:Literal>
        </div>
    </center>
    </form>
</body>

預覽如所示:

7.開啟Default.aspx.cs檔案,輸入如下代碼:

  

//這段代碼很重要 
protected override void InitializeCulture()
        {
            string culture = Request.QueryString["curlanguage"];
            if (!String.IsNullOrEmpty(culture))
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(culture);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ltlcountry.Text = Resources.language.country.ToString();
                ltlcity.Text = Resources.language.city.ToString();

                ltlcountry2.Text =(string)GetGlobalResourceObject("language", "country");
                ltlcity2.Text=(string)GetGlobalResourceObject("language", "city");

            }
        }

8. build下整個項目,按F5瀏覽: 點擊中的  "中文" 和 "英文" 連結就可以查看我們所要的效果了

在上一篇文章中基本上已實現了網站的多語言功能了,但是網站上的圖片,CSS樣式檔案怎麼利用資料檔案來實現呢?

1.我們接著上一篇文章中建立的項目繼續做,建立一個test2.aspx檔案,同時建立一個images檔案夾和style檔案夾.
在images檔案夾下放兩張圖片: loading.gif 和loading_en.gif  . 在style檔案夾下建兩個CSS樣式表檔案: CSS.css 和CSS_en.css

CSS.css檔案的樣式代碼為:

body
{
    font-family: Arial @宋體 font-size:12px;
   
}

#maindiv
{
    margin: 20px;
    padding: 10px;
    height: 200px;
    width: 200px;
    border: solid 5px #C0C0C0;
    text-align: center;
    background-color: Olive;
}

CSS_en.css檔案樣式代碼為:

body
{
    font-family: Arial Verdana;
    font-size: 12px;
}


#maindiv
{
    margin: 20px;
    padding: 10px;
    height: 200px;
    width: 200px;
    border: solid 5px #C0C0C0;
    text-align: center;
    background-color: gray;
}

2.新一個命名為BaseLanguage.cs的類,並設定這類繼承: System.Web.UI.Page ,代碼如下:

    public class BaseLanguage : System.Web.UI.Page
    {
        protected override void InitializeCulture()
        {
            string culture = Request.QueryString["curlanguage"];
            if (!String.IsNullOrEmpty(culture))
            {
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);
                System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(culture);
            }
        }

    }


因為上面的這段代碼是每個頁面都必須要有的,所以這裡把分給寫到一個專門的類中,並繼承System.Web.UI.Page,然後每個頁面再繼承這個類就可以了

整個項目的檔案結構如所示:

3.開啟test2.aspx檔案,在head中加入
<head runat="server">
    <title>asp.net 2.0實現多語言</title>
    
    <link href="style/CSS.css" rel="stylesheet" type="text/css" id="link"  runat="server"/>
   
</head>

這裡我給<link>,添加了runat="server" id="link",就把link作為了一個伺服器控制項了,在後台可以引用
同時body中的代碼如下:
<body>
    <form id="form1" runat="server">
   <center>
        <div id="maindiv">
            <br />
            <a href="?curlanguage=zh-cn">中文</a> &nbsp;
             <a href="?curlanguage=en-us">英文</a>
            <br />
            <br />
            國家:&nbsp;<asp:Literal ID="ltlcountry" runat="server"></asp:Literal>
            <br />
            城市:&nbsp;<asp:Literal ID="ltlcity" runat="server"></asp:Literal>
           
             <br />
            <br />
            國家2:&nbsp;<asp:Literal ID="ltlcountry2" runat="server"></asp:Literal>
            <br />
            城市2:&nbsp;<asp:Literal ID="ltlcity2" runat="server"></asp:Literal>
            <br />
            <br />
            <br />
            <br />
            <img runat="server" id="imgLoading" alt="" src="~/images/loading.gif" />
            
        </div>
    </center>
    </form>
</body>

//注意加個img標籤,runat="server"

4.開啟資源檔,添加一個名稱為loadingImg和pagestyle的資源項:如所示

5. 開啟test2.aspx.cs檔案,把它繼承"System.Web.UI.Page" 改成繼承 "BaseLanguage"類
代碼如下所示:

    public partial class Test2 : BaseLanguage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                link.Href = Resources.language.pagestyle.ToString();   //頁面的樣式檔案設定
                imgLoading.Src = Resources.language.loadingImg.ToString();   //圖片的路徑

                ltlcountry.Text = Resources.language.country.ToString();
                ltlcity.Text = Resources.language.city.ToString();

                ltlcountry2.Text = (string)GetGlobalResourceObject("language", "country");
                ltlcity2.Text = (string)GetGlobalResourceObject("language", "city");

               

            }
        }
    }


6.build下整個項目,F5瀏覽下 test2.aspx 的 效果:圖片和樣式都有改變

7.最後 如何讓我網站自動根據使用者端的瀏覽器語言設定來自動顯示相應的呢?
  1)開啟web.config檔案, 在system.web節中間加上globalization配置節,如下代碼:
<system.web>
.......
<globalization culture="auto" uiCulture="auto" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
    </system.web>

   2)開啟IE瀏覽器,工具-->Internet選項-->常規-->語言  ,來設定瀏覽器的語言項,為裡我把英語(美國)移到最上面 .如所示:

點"確定",關了瀏覽器,然後再重新瀏覽 test2.aspx.在我們沒有點擊"英文"就自動顯示英文了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.