2012-10-23 31 views
1

大家好我正在寫一個小asp.net MVC應用程序,我希望把它本地化,支持一種以上的語言,我發現許多有用的文章.NET MVC應用程序加載錯誤的語言資源文件

我爲語言添加路由 我使用自定義actionfilter屬性來選擇當前線程的當前文化,具體取決於URL中的語言代碼,如英語的「site.com/en/controller/action」或「site.com/ar/controller/action 「阿拉伯語。

我爲英語創建了「Resources \ Views \ Shared \ Layout.resex」,爲阿拉伯語創建了「Resources \ Views \ Shared \ Layout.ar.resex」。

它只與阿拉伯語定位卡住的問題,我將當前線程文化手動設置爲英語,並刪除了actionfilter屬性,但它仍顯示阿拉伯文內容!這是什麼問題這是瘋狂的

回答

2

很難說沒有更多的細節或代碼,但一個簡單的錯過是你的web.config文件的配置。如果您在<system.web>(具有「auto」而不是文化標識符)中有<globalization uiCulture="auto" culture="auto" />之類的東西,那麼ASP.NET將使用由瀏覽器的語言設置確定的accept-language頭來自動選擇線程的文化。所以你所看到的可以部分解釋爲具有這種配置,並且在瀏覽器的語言列表中使用阿拉伯語之前的英語。

編輯:問題是,代碼需要使用Thread.CurrentThread.CurrentUICulture來控制使用何種本地化資源(Thread.CurrentThread.CurrentCulture是不同的東西,不影響定位,但區域設置相關的格式化/解析,如日期)。

+0

這並沒有解決我使用的問題現在它被卡住了英語換句話說這行Thread .CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(「en-US」);當我使用ar-EG或en-US時,沒有任何效果默認文件是唯一使用的文件 – ahmedsafan86

+1

請注意,enableClientBasedCulture不會執行任何操作,請參閱以下文章:http://stackoverflow.com/questions/8536715/但我想我知道你的問題是什麼:對於本地化來說,你不需要設置Thread.CurrentThread.CurrentCulture,而是使用Thread.CurrentThread.CurrentUICulture。 – Clafou

+0

是的男人,當我看到這個例子,我認爲這是一個重複的行,然後沒有寫它。當我意識到我寫了所有東西都沒問題,我想分享解決方案,並且提到了這個問題,非常感謝您幫助編輯您的答案,以包含您最近關於添加CurrentCulture的評論。 – ahmedsafan86

相關問題