[英]asp.net mvc Globalization. How do you do it?
學習 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 (這個來自ZE6B391A8D2C4D45902A23A8B6585703) baseController 對 cookie 中的應用程序名稱進行硬編碼)
我很困惑。 主要是我的見識不廣?? 推薦的方法是什么? 你在現實世界的應用程序中做過嗎? 你會分享代碼嗎? 你如何解決這個問題的一個片段會做嗎?
我正在尋找一種巧妙的方式,就像你可以在 asp.net 中做的那樣。我需要讓用戶能夠通過單擊標志或其他東西在運行時更改語言。
是否有要覆蓋的基本方法? 某處有合適的例子嗎? 您是否必須編寫某種 baseController class?
非常感謝您的時間
您應該使用資源文件來處理本地化。 這樣,您就可以獲取用戶之前選擇的或他現在選擇的語言。 這是一個很好的博客如何做到這一點http://adamyan.blogspot.com/2010/02/aspnet-mvc-2-localization-complete.html
如果用戶沒有活動的 session,意味着沒有識別他的 cookie,您應該使用瀏覽器語言或地理跟蹤服務來確定站點語言。 您可以提供一種更改當前語言的簡單方法...如上所述,資源文件將在這里為您提供幫助。
如果您使用的是 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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.