学习asp.net mvc,每当我工作时,我们都必须本地化我们的应用程序。看了几篇文章,例如
http://www.codeproject.com/KB/aspnet/BilingualMvc3Part1.aspx(使用Broswer默认语言,这对我来说永远不会有用。你能想象我在西班牙度假时会说英语吗,需要使用网站,我还没有得到如何使用的线索更改设置)否
http://geekswithblogs.net/shaunxu/archive/2010/05/06/localization-in-asp.net-mvc-ndash-3-days-investigation-1-day.aspx(这一个通过网址,但查看他的baseController类硬编码cookie中的应用程序名称)
我很困惑。主要是因为我的知识不是很好!! 建议的方法是什么?你在现实世界的应用程序中做过吗?你会分享代码吗?你如何解决这个问题的片段呢?
我正在寻找一种像在asp.net中那样简洁的方式。我需要能够让用户通过点击标志或其他东西在运行时更改语言。
是否有基础方法可以覆盖? 某处有适当的例子吗?你必须写一些baseController类吗?
非常感谢你的时间
答案 0 :(得分:2)
您应该使用资源文件来处理本地化。有了这个,您就可以获得用户之前选择的语言,或者他现在就选择了这种语言。这是一个很好的博客,如何做到http://adamyan.blogspot.com/2010/02/aspnet-mvc-2-localization-complete.html
如果用户没有活动会话,则表示没有标识他的cookie,您应该使用浏览器语言或地理标记服务来确定站点语言。由您提供一种更改当前语言的简单方法......如上所述,资源文件将在这里为您提供帮助。
答案 1 :(得分:0)
如果您使用的是Asp.Net MVC
//A foreigner, has possibly brew a cookie for me
public class SpeakNativeTongueAttribute : ActionFilterAttribute, IActionFilter
{
const string cookieName = "culture";
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
var cookieKeys = filterContext.RequestContext.HttpContext.Request.Cookies.AllKeys;
if (cookieKeys.Contains(cookieName))
{
//eat the cookie
var theCultureCookie = filterContext.RequestContext.HttpContext.Request.Cookies[cookieName];
var theCulture = theCultureCookie.Value;
//say thanks in native tongue
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo(theCulture);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(theCulture);
}
else
{
//Didn't receive a cookie, don't speak their language
}
}
}
如果他们点击某种语言并在页面上重新加载,请使用Javascript设置Cookie。