The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何強迫 .Net 應用程式輸出英文的例外訊息

因為常常需要跟國外 Blogger 交流,甚至回報某些國外 .Net 產品的 Bug 給他們,所以常常都要自行翻譯「例外訊息」( Exception Message ),不過有時後真的會翻錯。再者,若在開發 .Net 時遇到一些很少見的問題,用中文搜尋不到時,可能會想將訊息翻成英文後再搜尋一次,不過也有可能因為翻譯錯誤導致搜尋結果不夠精準。所以若能夠在除錯的時候輸出英文版的例外訊息,那該有多好阿!

我昨天自己嘗試看可不可以修改輸出的訊息,不過我試著用以下程式碼看可否強迫輸出英文訊息:

System.Threading.Thread.CurrentThread.CurrentCulture =
                    new System.Globalization.CultureInfo("en-US");

不過卻沒有任何反應,最後我到微軟技術社群討論區Visual C#找到了答案,感謝瓶水相逢.Net的 chhuang 提供這個線索。原來除了要設定 System.Threading.Thread.CurrentThread.CurrentCulture 之外,還必須設定 System.Threading.Thread.CurrentThread.CurrentUICulture 才能夠真的將例外訊息全部改變成英文版。

System.Threading.Thread.CurrentThread.CurrentCulture = 
    new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentUICulture = 
    new System.Globalization.CultureInfo("en-US");

除了可以用在 Console Program 外,同樣的程式碼一樣也可以運用在 ASP.NET、Windows Form 或任何其他 .Net 應用程式中喔!