2017-04-04 114 views
0

我一直在following this page使我的網站支持多種文化。爲什麼我的不同語言的resx文件被忽略

代碼全部編譯並運行,但它似乎忽略了我的文化特定的resx文件。

現在測試是非常膚淺的,我只有2個資源文件; Resources.resxResources.au.resx

我的模板正在調用@Resources.PageFooter這是在這兩個文件中定義的唯一字符串。

如果我瀏覽到http://mysite/index並檢查頁面頁腳,它包含我的默認值。如果我將我的網址更改爲http://mysite/au/index,那麼它仍會顯示默認值。然而,檢查CurrentThread.CurrentUICulture和CurrentThread.CurrentCulture顯示現在都設置爲au,但它仍在繼續使用Resources.resx而不是Resources.au.resx

我的資源文件位於單獨的文件夾中資源文章建議。

所以我卡住了。

經過一番調查後,我發現如果我創建另一個resx文件(對於意大利語),那麼這是有效的。

所以它看起來像被忽略的文件是'變化',如美國英語,澳大利亞英語等。

+0

請分享您的代碼 –

+0

代碼與文章中的代碼非常相似。不過,我剛剛更新了我的問題:-) – Matt

+0

澳大利亞英語不是'en-AU'而不是'au'嗎? –

回答

1

首先,請將au更改爲en-AU,因爲這是澳大利亞英語的正確校驗碼。

在你Global.asax文件中,設置如下面的Application_BeginRequest方法:

void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    string langCode = "en"; //default 

    if (somecondition) 
      langCode = "en-AU"; 

    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(langCode); 
    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(langCode); 
} 

你需要我上面提到的somecondition以檢查用戶是來自 - 通過頭,餅乾,URI或其他任何方式你想。

+0

如果你看看我跟着的文章,我正在做你所有的建議(以爲我使用過濾器和激活器,而不是BeginRequest。) – Matt