我已经成功实现了一个多语言网站,用户可以通过单击其中一个图像按钮来更改语言。 我使用Hiddenfield来存储用户选择的语言代码(在Imagebutton click事件上)。 我的InitializeCulture方法如下所示:
protected override void InitializeCulture()
{
string culture = "Auto";
string selectedValue = Request.Form["ctl00$HiddenFieldLang"];
switch (selectedValue)
{
case "1": culture = "Auto";
break;
case "2": culture = "zh-HK";
break;
default: break;
}
if (culture != "Auto")
{
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(culture);
//ci = System.Globalization.CultureInfo.CreateSpecificCulture(culture);
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
}
base.InitializeCulture();
}
这很好用。但它需要2个回发才能更改页面的语言。我猜,在一个回发中(没有任何改变),隐藏字段的值被设置。在第二次回发中,实际翻译发生。
如何实现它,以便只需点击一下图像按钮即可翻译页面?
谢谢!
答案 0 :(得分:0)
您可以为imagebutton的click事件添加客户端处理程序,并在其上设置HiddenFieldLang上的值。 或者你可以获得一个在InitializeCulture方法中引发回发的控件,如果它是用于切换语言的按钮之一,那么应用适当的文化。
我认为第一个选项是首选,因为您不需要检查每次控制导致回发。
答案 1 :(得分:0)
我已经在ASP.NET中实现了多语言站点并且遇到了一些问题...您可以在Question中找到所需的代码,并在我自己的答案中找到有关Hyperlink的问题解决方案。在这里,我认为你必须找到Image控件而不是HiddenField控件
答案 2 :(得分:0)
谢谢大家的回复。 我设法在this链接的帮助下解决了这个问题。
但我现在有另一个问题。 我有一个母版页,我把Hiddenfield和Javascript函数设置为我的母版页中的hiddenfield值。在我所有页面的URL中,我有一个带有语言ID的查询字符串。因此,每当语言发生变化时,我也想改变查询字符串。
有什么方法可以从母版页中获取当前内容页面的URL,并从SetHiddenValue(val)函数本身执行Response.Redirect或Server.Transfer,并确保文本已翻译?