无法更改.aspx页面的文化

4 .net c# asp.net resources localization

我无法改变.aspx页面的文化.

当我在顶部使用page指令指定文化时:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="VideoPlayerPrototype.Index" Culture="ur-PK" UICulture="ur-PK" %>
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.

我想做的是,当用户点击链接时能够更改本地化.

链接:

<asp:ImageButton ID="lang_ur-PK" 
                            ImageUrl="~/content/image/flag-of-pakistan.png" 
                            runat="server" 
                            CssClass="language" 
                            Height="64px" 
                            Width="64px"
                            OnClick="setLanguage" />
Run Code Online (Sandbox Code Playgroud)

setLanguage方法:

        protected void setLanguage(Object sender, EventArgs e)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ur-PK");
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ur-PK");
            Response.Redirect(Request.Path);
        }
Run Code Online (Sandbox Code Playgroud)

调用此代码只会重新加载页面,并且不会加载正确的语言.

我有存储在App_LocalResources和App_GlobalResources中的.resx文件:

Index.aspx.resx,Index.aspx.en.resx,Index.aspx.ur-PK.resx,Index.aspx.ur.resx等.

以下是必须本地化的控件示例:

 <asp:Label id="lblInfoWelcomeMsg" runat="server" 
                            Text="<%$ Resources:LocalizedText, Summary_Info_WelcomeMsg %>"></asp:Label>       
Run Code Online (Sandbox Code Playgroud)

谢谢

Muh*_*tar 7

您必须在后面的代码中添加此方法:

protected override void InitializeCulture()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ur-PK");
        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ur-PK");
        base.InitializeCulture();
    }
Run Code Online (Sandbox Code Playgroud)

如果你可以创建BasePage一个类并在那里添加它然后BasePage可以在每个页面上继承它会更好.