我无法更改 .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/