c# - 无法更改 .aspx 页面的区域性

标签 c# .net asp.net resources localization

我无法更改 .aspx 页面的文化。

当我在顶部使用页面指令指定区域性时:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="VideoPlayerPrototype.Index" Culture="ur-PK" UICulture="ur-PK" %>

一切都按预期进行。

我想做的是能够在用户点击链接时更改本地化。

链接:

<asp:ImageButton ID="lang_ur-PK" 
                            ImageUrl="~/content/image/flag-of-pakistan.png" 
                            runat="server" 
                            CssClass="language" 
                            Height="64px" 
                            Width="64px"
                            OnClick="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);
        }

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

我在 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>       

谢谢

最佳答案

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

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();
    }

如果你能把BasePage做成一个类,然后把它加进去,然后BasePage就可以在每个页面上继承就更好了。

关于c# - 无法更改 .aspx 页面的区域性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564354/

相关文章:

c# - 在 Azure Function V4 中配置 Azure KeyVault 端点

c# - "Using shared compilation with compiler from directory .."消息是什么意思,什么是共享编译?

c# - 可以将 F# 类型的提供程序合并到 C# 中吗

c# - C# 中 lua `local variable = var1 or var2` 的类似物是什么?

c# - 如何在 C# 中为 SQL Azure 启用内部 Azure 服务

c# - 内容类型 - WebAPI - 请求 header

javascript - 添加 li 作为 Jquery 的最后一个元素

c# - 从 EF 4.0 ObjectContext 升级到 EF 6/6.1

c# - 有什么方法可以判断值来自哪个属性?

ASP.NET 在不断更新的 Firefox Chrome 中保持滚动位置或回发