2013-02-06 204 views
3

我的理解是,當您將CurrentThread.CurrentUICulture設置爲例如「da-DK」時,它將查找「da-DK」中的資源文件,然後查找「da」,然後回退到不變的文化。這適用於桌面應用程序,因爲操作系統通常不是多語言的。但對於網站而言,情況並非一定如此。.Net多語言本地化

假設我有一個訪問者,他的瀏覽器堅持用戶想要「da_DK」,「de_DE」和「en_GB」,如果存在的話是丹麥語,然後是德語,然後是英國英語作爲後備。

有沒有什麼方法可以使用.Net 4本地化框架來適應這種偏好?

不,這不是一個思想實驗。 :)

編輯

只是要明確,這個問題沒有得到來自Web請求的本地化頭。問題在於設置CurrentThread.CurrentUICulture的方式是按順序檢查資源文件,而不是僅僅檢查資源文件。

另一種方法來檢查CurrentUICulture是否有匹配的resx文件。

回答

0

我想這是你所追求的:

HttpRequest.UserLanguages()

這將返回用戶語言的優先順序排列。但是,如果他們的瀏覽器配置不能準確反映他們真正想要的內容,那麼允許他們更改針對此信息應用的任何本地化可能是一個好主意。

更新:

要檢查是否存在資源利用:

ResourceManager.GetResourceSet

在這裏你可以設置tryParents爲false。如果沒有資源存在,該方法將返回null。然後,您可以繼續嘗試在標題中返回的下一個首選文化。

+0

對不起,我應該澄清。問題是沒有獲取標題信息。問題在於.Net要比默認情況下做更詳盡的CultureInfo搜索。 –

+0

@MikkelLøkke - 我已更新了更多信息。 –

+0

感謝隊友。 :) –