今年三月剛開始用 Windows 8 預覽版時曾經寫過一篇【ASP.NET 2.0 多國語系網站與 Windows 8 的 IE10 語系設定】文章,該文章提到一個在 Windows 8 與 IE10 在針對語言喜好設定時的問題,除了可能會造成你現有 ASP.NET 多國語系應用程式發生例外狀況外 (先前文章有提到解決辦法),還有可能會導致許多網站顯示錯誤的語言文字。最近安裝了 Windows 8 RTM (正式版) 之後,終於被我找到解決辦法。
備註:建議開發人員先看過【ASP.NET 2.0 多國語系網站與 Windows 8 的 IE10 語系設定】文章才會比較了解為什麼新版 IE10 與 Windows 8 可能會導致 ASP.NET 3.5 以前 (含) 會發生例外狀況。
如果你要讓特定一些網站不發生錯誤或原本該顯示中文的網站突然都顯示成英文的話,建議按照以下設定即可讓原本瀏覽器送出的 Accept-Language 標頭從 zh-Hant-TW 變回傳統的 zh-TW 語系設定!
1. 開啟 語言喜好設定 視窗
選取 [工具] / [網際網路選項] / [一般] 頁籤 / [語言],然後點擊 [設定語言喜好設定] 按鈕
2. 點擊 [進階設定]
3. 捲動到最下方,你會發現有個 適用於網路內容的語言 分類,裡面有個 [不要讓網站存取我的語言清單。將改用我的日期、時間和數字格是設定的語言。] 勾選項目,將其打勾後按下 [儲存] 即可。
如此一來,如果你選擇的日期、時間和數字格式是 中文 (繁體,台灣) 的話 (如下圖示),那麼你的 IE10 瀏覽器所送出的 Accept-Language 標頭就會跟 IE9 以前預設的語言設定 zh-TW 一樣,許多相容性問題也會自然解決。
以下是從 Fiddler 中得到的佐證圖示:
備註
IE9 以前的瀏覽器版本是可以選擇多個語言的,也就是設定語言喜好設定時可以決定其語言優先順序,在 IE10 也會依照系統的語言順序送出正確的 Accept-Language 標頭,如下範例:
Accept-Language: zh-Hant-TW,zh-Hant;q=0.8,en-US;q=0.5,en;q=0.3
但依照本篇文章所建議的設定有個小缺點,那就是這個選項會導致一次只能設定一個語言喜好,不能設定為多個,如下範例:
不過此缺點似乎對許多人來說不會有多大影響,因為若伺服器端不支援 zh-TW 本來就會預設顯示英文,除非一些比較特殊的網站。