2013-07-17 50 views
1

我使用MVC 4和剃刀視圖。我們有一個從資源文件中提取的應用程序。目前只有一組資源文件,但我們有要求在網站的某些部分進行一些翻譯,這些翻譯會看到一些額外的外語資源文件進來。根據mvc中的查詢字符串變量切換語言資源文件的最佳方式是什麼?

部分應用程序向用戶發送引薦,在該推薦中,可以選擇設置要顯示的語言(不管用戶客戶端是如何設置的)。這將在查詢字符串上設置爲lang=ES。我們在視圖中引用資源變量@Resources.Templates.ReferralAcceptance.DefaultAcceptanceMessage。如果查詢字符串中沒有可用的lang值,我需要默認從客戶端發送的cultureCode,如果不可用,它將回退到我們的標準英文版本。

我是新來的資源文件,特別是與MVC。我解決這個問題的最好方法是什麼?

回答

2

這是我在過去所做的那樣:

在你web.config文件,添加以下設置:

<system.web> 
    <globalization enableClientBasedCulture="true" /> 
    </system.web> 

這將處理您的後備例如,在沒有語言集在查詢字符串中。


我們的控制器利用查詢字符串「郎」參數:(我通常會有下面的代碼在「BaseController」,並有我的控制器從這個繼承)

以下重寫方法添加到您的控制器:

protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state) 
{ 
    var culture = requestContext.HttpContext.Request.QueryString["lang"]; 

    //!!Check to see if culture exists and is valid before setting the thread culture 

    var cultureInfo = new CultureInfo(culture); 
    Thread.CurrentThread.CurrentCulture = cultureInfo; 
    Thread.CurrentThread.CurrentUICulture = cultureInfo; 

    return base.BeginExecute(requestContext, callback, state); 
} 

這使您可以在查詢字符串閱讀「郎」的值,然後用它來設置文化Ø f線程。這應該覆蓋由enableClientBasedCulture設置設置的任何文化。

相關問題