我正在创建一个网站,将是多语言的性质。我提供了一个功能,使用户可以选择所需的语言从下拉列表中选择它。
现在我的问题从这里开始(当从下拉列表中选择一种语言时)。我目前正在实施2种语言,英语和阿拉伯语。
问题是,当用户从登录页面上的下拉列表中选择阿拉伯语时,页面将被刷新,浏览器将加载所有阿拉伯语内容。
但是..。
当我再次选择English back时,页面会刷新,但语言内容不会改变!
我已经检查了代码和值(区域性名称值)是否正确应用!!
任何关于哪里出了问题和在哪里的线索...
这是我的代码。
protected override void InitializeCulture()
{
String selectedLanguage = string.Empty;
if (Request.Form["ddlLanguage"] != null)
{
selectedLanguage = Request.Form["ddlLanguage"];
CultureInfo ci = new CultureInfo(selectedLanguage);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
base.InitializeCulture();
}
任何帮助都将是伟大的!!
谢谢
发布于 2012-09-03 17:15:46
必须在每个请求上设置Culture
设置。当选择发生变化时,只设置一次Thread
区域性是不够的。
为了根据用户对每个请求的选择来设置区域性,有几种可能的方法。
Page_Init
事件中设置区域性。MyBasePage
)并重写该类的InitializeCulture
方法。然后,让所有内容页面都派生自该类,而不是直接派生自Page
.Global.asax
.无论您将使用哪种方法,用户选择的区域性都必须可用于将要在线程上设置区域性的代码。因此,当用户更改他/她的选择时,您必须将该选择保存在您可以在后续请求中访问它的位置。这也可以通过几种可能的方式来解决。以下是一些选项:
Session
中,但这意味着每当Session
重置时,用户都必须重新选择它。有关如何使用Global.asax
和cookie
实现这一点的更详细示例,请查看over here。
发布于 2014-01-28 07:36:54
查看这篇文章- 我们将主要看到两种方法-
方法1:使用静态页面
方法2:在运行时使用带有本地化数据的动态页面
https://stackoverflow.com/questions/12242873
复制相似问题