【问题标题】:How can I change culture when the use click on a button?使用单击按钮时如何更改文化?
【发布时间】:2021-09-18 18:25:07
【问题描述】:

我在一个文件夹中创建了两个资源文件。我将它们中的每一个用作我网站的语言资源。 在 Global.asax 中,我使用以下代码更改语言:

        protected void Application_AcquireRequestState(object sender, EventArgs e)
    {
        string culture = "en";
        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(culture);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
    }

问题是,每次我想更改语言时,我都必须访问上面的代码并更改文化值。

有没有办法通过按钮点击事件来实现?

【问题讨论】:

    标签: c# asp.net .net visual-studio


    【解决方案1】:

    使用按钮切换语言,可以参考以下方法和代码。

    项目结构如下:

    Page1.aspx.resx:

    Page1.aspx.ku.resx:

    Page2.aspx.resx:

    Page2.aspx.ku.resx:

    Page1.aspx的代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page1.aspx.cs" Inherits="Language.Page1" %>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
             <div>
                 <asp:Label ID="Label1" runat="server"  Text="English" Width="80px"></asp:Label>
                 <asp:Button ID="Button2" runat="server" Text="en-us" OnClick="Button2_Click"  />
             </div>
             <p>
                 <asp:Label ID="Label2" runat="server"  Text="Kurdish" Width="80px"></asp:Label>
                 <asp:Button ID="Button3" runat="server" Text="ku" OnClick="Button3_Click"  />
             </p>
             <p>
                <asp:Button ID="Button1" meta:resourceKey="Button1" runat="server" Text=" Hello" />
             </p>
        </form>
    </body>
    </html>
    

    Page1.aspx.cs的代码:

    using System;
    using System.Globalization;
    using System.Threading;
    namespace Language
    {
      public partial class Page1 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected override void InitializeCulture()
        {
          if (Session["lang"] != null)
          {
            Culture = Session["lang"].ToString();
            UICulture = Session["lang"].ToString();
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString());
            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString());
            base.InitializeCulture();
          }
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
          Session["lang"] = Button2.Text;
          Response.Redirect("Page1.aspx");
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
          Session["lang"] = Button3.Text;
          Response.Redirect("Page1.aspx");
        }
      }
    }
    

    Page2.aspx的代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page2.aspx.cs" Inherits="Language.Page2" %>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1" Text="ok"></asp:Label>
            </div>
        </form>
    </body>
    </html>
    

    Page2.aspx.cs的代码:

    using System;
    using System.Globalization;
    using System.Threading;
    namespace Language
    {
      public partial class Page2 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected override void InitializeCulture()
        {
          if (Session["lang"] != null)
          {
            Culture = Session["lang"].ToString();
            UICulture = Session["lang"].ToString();
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString());
            Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString());
            base.InitializeCulture();
          }
        }
      }
    }
    

    【讨论】:

    • 嗨,@M Awad。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。
    猜你喜欢
    • 1970-01-01
    • 2015-04-21
    • 2023-02-16
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多