net2.0多语言网页的实现

我昨天结合网上的资料实现了网页的多语言.其中有简体中文,繁体中文,英文三个.主要步骤是:
1.首先建立资源文件strings.resx,再建立 strings.en-us.resx,strings.zh-cn.resx,strings.zh_hk.resx.必须要有strings.resx,这个文件可以没有任何内容.但必须有.不然在下面的default.aspx.cs中,visual studio会自动提示把这些资源文件放在App_GlobalResources目录下.

   #region Resource
    public string Resource(string key)
    {
        string resourceValue = null;

        CultureInfo ci = CultureInfo.CurrentCulture;
        ResourceManager rm = Resources.strings.ResourceManager;
        resourceValue = rm.GetString(key, ci);
        return resourceValue;
    }
    #endregion

中 Resources.strings.ResourceManager就会访问不到
2.应用程序根目录下建立有时候叫做 ASP.NET 应用程序文件Global.asax.增加以下代码
     void  Application_BeginRequest( object  sender, EventArgs e)
    
{
        
try
        
{
            
if (Request.Cookies["CultureResource"!= null)
                System.Threading.Thread.CurrentThread.CurrentCulture 
= new System.Globalization.CultureInfo(Request.Cookies["CultureResource"].Value);
            
else
                System.Threading.Thread.CurrentThread.CurrentCulture 
= new System.Globalization.CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
            System.Threading.Thread.CurrentThread.CurrentUICulture 
= System.Threading.Thread.CurrentThread.CurrentCulture;
        }

        
catch (Exception)
        
{
            System.Threading.Thread.CurrentThread.CurrentCulture 
= new System.Globalization.CultureInfo(ConfigurationSettings.AppSettings["DefaultCulture"].ToString());
        }

         
    }


每次访问页面时,程序都在运行这段代码一次.不知道有谁能有更好的方法.我觉得这样不是很好.麻烦提示哦!

3.以下是页面的代码
aspx
  < TABLE id = " Table1 "  align = " center "  cellSpacing = " 0 "  cellPadding = " 0 "  width = " 100% "  border = " 0 " >
                            
< colgroup >
                                
< col width = " 50% " >
                                
</ col >
                                
< col width = " 50% " >
                                
</ col >
                            
</ colgroup >
                            
< TR >
                                
< TD align = " right " ><%= Resource( " language " %> : </ TD >
                                
< TD >
                                    
< asp:Button id = " Button1 "  runat = " server "  Text = " 中文 "  OnClick = " Button1_Click " ></ asp:Button >
                                    
< asp:Button id = " Button2 "  runat = " server "  Text = " 英文 "  OnClick = " Button2_Click " ></ asp:Button >
                                    
< asp:Button id = " Button3 "  runat = " server "  Text = " 繁体中文 "  OnClick = " Button3_Click " ></ asp:Button >
                                
</ TD >
                            
</ TR >
                            
< TR >
                                
< TD align = " right " >
                                    
< asp:Label id = " Label1 "  runat = " server " > Label </ asp:Label > : </ TD >
                                
< TD >
                                    
< asp:TextBox id = " txtLoginName "  runat = " server "  Width = " 100% " ></ asp:TextBox ></ TD >
                            
</ TR >
                            
< TR >
                                
< TD align = " right " >
                                    
< asp:Label id = " Label2 "  runat = " server " > Label </ asp:Label > : </ TD >
                                
< TD >
                                    
< asp:TextBox id = " txtPassword "  runat = " server "  Width = " 100% " ></ asp:TextBox ></ TD >
                            
</ TR >
                        
</ TABLE >

aspx.cs
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Resources;
using  System.Globalization;
using  System.Reflection;
using  Microsoft.VisualBasic;

public   partial   class  _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        Label1.Text 
= Resource("LoginName");
        Label2.Text 
= Resource("Password");

    }

      

    
#region Resource
    
public string Resource(string key)
    
{
        
string resourceValue = null;

        CultureInfo ci 
= CultureInfo.CurrentCulture;
        ResourceManager rm 
= Resources.strings.ResourceManager;
        resourceValue 
= rm.GetString(key, ci);
        
return resourceValue;
    }

    
#endregion



    
protected void Button1_Click(object sender, EventArgs e)
    
{
        
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["CNCulture"].ToString());
        System.Web.UI.Page currentPage 
= (System.Web.UI.Page)this;
        Response.Redirect(currentPage.Request.Url.ToString());
    }

    
protected void Button2_Click(object sender, EventArgs e)
    
{
        
this.UpdateCultureCookie(ConfigurationSettings.AppSettings["ENCulture"].ToString());
        System.Web.UI.Page currentPage 
= (System.Web.UI.Page)this;
        Response.Redirect(currentPage.Request.Url.ToString());

    }

}
strings.zh-cn.resx
在视图下增加三个字段
language 请选择语言
LoginName 用户名
Password 密码

同样 strings.zh-hk.resx
language 請選擇語言
LoginName 用戶名
Password 密碼

string.en-us.resx
language Please Select Language
LoginName Username
Password Password

你可能感兴趣的:(asp.net多语言)