我們正在構建支持多種語言的網站。我們已創建資源來支持fr,de和en-US,默認情況下是en-US。我已添加:ASP.NET中的自動語言文化選擇和回退算法
<system.web>
<globalization
uiCulture="auto" culture="auto"
requestEncoding="utf-8"
responseEncoding="utf-8"
enableClientBasedCulture="true" />
...
</system.web>
到我的web.config
文件。如果我在IE或Chrome中將語言設置爲fr,de或en-US,我會得到預期的語言。如果我將語言設置爲ar-EG,我也會按照預期獲得en-US。
如果我將我的語言設置爲fr-FR,但不將fr包含在接受的語言列表中,即使我告訴瀏覽器我更願意接受de以泛化fr(即相反FR-FR)。這看起來與RFC相反,但並不令人意外,因爲IE在法國默認爲fr-FR,在德國爲de-DE,並且不適用於不自動概括文化的網站。
但是,如果我告訴瀏覽器我接受ar-EG和fr,站點默認爲en-US - 即使Accept-Language頭指定我將接受fr具有更高優先級。我在瀏覽器中捕獲了請求標題,以確保我要求的所有語言都以正確的優先級發送。
看來ASP.NET只是在查看Accept-Language頭文件中指定的第一種語言。是否在任何地方指定了ASP.NET語言匹配算法?有沒有辦法指定ASP.NET/MVC應該檢查Accept-Language列表中的所有語言以確定最佳的語言?還是我必須編寫自己的語言匹配代碼?
- 是的,在MSDN它指出「有ASP.NET設置UI文化和文化的在當前瀏覽器設置中指定的第一種語言,將UICulture和Culture設置爲自動「,正是您所看到的 - 請參閱http://msdn.microsoft.com/en-us/library/bz9tc508(v=VS.100 ).aspx – Joe 2013-04-05 15:04:12