ASP.NET MVC - 设置文化信息

时间:2015-03-13 12:51:45

标签: asp.net-mvc localization globalization

我有一个ASP.NET MVC应用程序。此应用允许用户设置文化以查看应用内容。为此,用户访问~/user/language。他们选择语言并单击“保存”按钮。在我的控制器中,我有以下内容:

CultureInfo ci = new CultureInfo(model.Culture);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
return View(model);

重新加载视图时,字符串已按照我的预期进行翻译。但是,如果我访问应用程序中的另一个页面,字符串不会像我期望的那样翻译。这就像文化信息没有被保存或线程被杀死。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

@heymega是对的。目前的文化是非持久性的。您必须在每个请求的开头加载。您需要将文化设置为持久位置(例如cookie),然后将文化设置为Application_BeginRequest事件中的线程。

比使用cookie更好的方法是将文化构建到URL中。

http://www.somesite.com/es-MX/somewhere
http://www.somesite.com/en-US/somewhere

这就是搜索引擎所期望的,这意味着用户可以通过切换URL轻松切换文化,而且您不必每个用户跟踪文化。但是,您仍需要根据URL在每个请求的开头设置区域性。