如何使用 asp:DropDownList 更改页面本地化?

发布于 2024-10-27 04:30:27 字数 844 浏览 1 评论 0原文

我有本地化的应用程序,用户可以在下拉控件中选择她喜欢的语言。 OnSelectedIndexChanged 事件之后有回发,并且 CurrentThread.CurrentCulture 应设置为用户选择的内容。

Login.aspx.cs
public partial class Login : BasePage
{
   protected void LanguageDrop_changed(object sender, EventArgs e)
   {
       var lang = LanguageDropDown.SelectedValue;
       Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
       Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
   }
}

但是,它无法正常工作,因为 LanguageDrop_click 事件在 InitializeCulture 之后触发,因此初始化了一些默认区域性,将控件本地化为默认语言,然后设置了 CurrentThread.CurrentCulture。因此,用户必须再次刷新页面才能以所选语言查看它们。

更新: 我找到了部分答案:http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur。 ASPX 他从 Form 集合中检索 InitializeCulture() 事件中的语言下拉值

I have localized application where user can choose her preferred language in dropdown control. After OnSelectedIndexChanged event there is postback and CurrentThread.CurrentCulture should be set to what user chooses.

Login.aspx.cs
public partial class Login : BasePage
{
   protected void LanguageDrop_changed(object sender, EventArgs e)
   {
       var lang = LanguageDropDown.SelectedValue;
       Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang);
       Thread.CurrentThread.CurrentCulture = new CultureInfo(lang);
   }
}

However, it does not work correct because LanguageDrop_click event fires after InitializeCulture so some default culture is initialized, controls are localized to default language and then CurrentThread.CurrentCulture is set. So user have to refresh page once more to see them in chosen language.

UPDATE:
I found partial answer: http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur.aspx
He retrieves language dropdown value in InitializeCulture() event from Form collection

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与往事干杯 2024-11-03 04:30:27

最好的答案是我提供的链接

http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur.aspx< /a>
他检索语言下拉值
在 Form 的 InitializeCulture() 事件中
收藏


或进行 Response.Redirect 以便再次请求页面,然后设置区域性。

The best answer is either link I provided

http://www.codeproject.com/Kb/aspnet/localizationByVivekTakur.aspx
He retrieves language dropdown value
in InitializeCulture() event from Form
collection

or making Response.Redirect so page is requested again and then culture is set.

救星 2024-11-03 04:30:27

不幸的是,根据我的经验,没有更好的选择,您将不得不执行另一次刷新。你的推理是正确的。

In my experience there's no better option unfortunately and you will have to perform another refresh. Your reasoning is correct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文