使用imagebutton更改多语言网站中的语言所需的2个回发

时间:2011-08-01 03:43:31

标签: c# asp.net multilingual

我已经成功实现了一个多语言网站,用户可以通过单击其中一个图像按钮来更改语言。 我使用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个回发才能更改页面的语言。我猜,在一个回发中(没有任何改变),隐藏字段的值被设置。在第二次回发中,实际翻译发生。

如何实现它,以便只需点击一下图像按钮即可翻译页面?

谢谢!

3 个答案:

答案 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,并确保文本已翻译?