簡體   English   中英

asp.net mvc 全球化。 你怎么做呢?

[英]asp.net mvc Globalization. How do you do it?

學習 asp.net mvc,每當我工作時,我們都必須本地化我們的應用程序。 看了幾篇文章,例如

  1. http://afana.me/post/aspnet-mvc-internationalization.aspx (為每種語言創建一個視圖)不適合我
  2. http://www.codeproject.com/KB/aspnet/BilingualMvc3Part1.aspx (使用 Broswer 默認語言,這對我永遠不起作用。你能想象我在西班牙度假時會說英語,需要使用該網站,但我沒有知道如何更改設置)不

  3. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM