2013-10-21 15 views
0

我在默认页面上应用了全球化,但它不适用于Web用户控制。 我已经创建了Header.ascx,并将两个linkBut​​ton一个用于英语,另一个用于西班牙语。 我正在使用header.ascx表单代码下面的代码...。如何在asp.net中应用全球化对Web用户控件c#

此代码为英文

protected void lbtnEng_Click(object sender, EventArgs e) 
    { 

     HttpCookie cookie = new HttpCookie("CultureInfo"); 
     cookie.Value = "en"; 
     Response.Cookies.Add(cookie); 
     Thread.CurrentThread.CurrentCulture = new CultureInfo("en"); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); 
     Server.Transfer(Request.Path); 

    } 

此代码为西班牙语

protected void lbtnSpan_Click(object sender, EventArgs e) 
{ 

    HttpCookie cookie = new HttpCookie("CultureInfo"); 
    cookie.Value = "es-mx"; 
    Response.Cookies.Add(cookie); 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-mx"); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-mx"); 
    Server.Transfer(Request.Path); 
    } 

上默认标签页的文本,但不是网络用户控制标签 宣告控制这代码更改语言

默认页
<asp:Label ID="lbl_test" runat="server" Text="<%$ Resources:Resource, Test %>"></asp:Label> 

and on web control

<asp:Label ID="lbl_test" runat="server" Text="<%$ Resources:Resource, Test %>"></asp:Label> 

回答

0

您一次只能设置一种语言。为了实现你的任务。使用静态字符串或者取一个由键值对组成的资源文件。这是提交密钥的一个例子。

ResourceFileForStaticStrings.resx 

Key     Value 
submitEnglish   Submit 
submitSpanish   Presentar 

储存于一个会话或一个cookie:尝试下面的一个

System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(Session("es").ToString) 
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(Session("es").ToString) 
+0

亚我已经创建了两个资源文件一个Resource.resx英语和第二个是Resource.es-mx.resx为西班牙语,在这也设置了键和值 –

+0

我知道你已经创建了2个资源文件。但事情是你一次不能设置两种语言。为了在一个页面中显示2种以上的语言。因此,如上所述创建单独的资源文件。 –

+0

我没有得到我设置一种语言的时候,当我们点击链接按钮,也创建两个单独的文件一个是resource.resx英语和第二个是Resource.es-MX为西班牙语 –