我正在创建一个多语言的网站。 我正在提供一种功能,用户可以通过从下拉列表中选择所需的语言来选择所需的语言。
现在我的问题从这里开始(当从下拉列表中选择一种语言时)。我目前正在实施2种语言的英语和阿拉伯语。
问题是当用户从登录页面的下拉菜单中选择阿拉伯语时,页面会刷新,浏览器会以阿拉伯语加载所有内容。
但是...
当我再次选择英语时,页面会刷新,但语言内容不会改变!!
我检查了代码并正确应用了值(文化名称值)!!
任何有关错误的线索以及......
这是我的代码......
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();
}
任何帮助都会很棒!!
由于
答案 0 :(得分:2)
必须在每个请求上设置Culture
设置。当选择发生变化时,仅设置Thread
种培养物是不够的。
为了根据每个请求的用户选择设置文化,有几种可能的方法。
Page_Init
事件中设置文化。MyBasePage
)并覆盖该类的InitializeCulture
方法。然后使所有内容页面都来自类,而不是直接来自Page
。Global.asax
。无论您将使用哪种方法,用户选择的文化必须可用于将在线程上设置文化的代码。因此,当用户更改他/她的选择时,您必须将该选择保存在您可以在即将到来的请求中访问它的位置。这也可以通过几种可能的方式解决。以下是一些选项:
ProfileProvider
,则可以将选择内容保存到用户的个人资料中。Session
中,但这意味着用户必须在Session
重置后重新选择它。有关如何使用Global.asax
和cookie
完成此操作的详细说明,请查看over here。
答案 1 :(得分:0)
查看此文章 - How to create ASP.NET MVC multilingual web application ? 我们将主要看到两种方法 -
方法1 :使用静态页面
方法2 :在运行时使用带有本地化数据的动态页面