2008-10-13 50 views
29

如何讓我的應用程序在顯示win32/.net異常消息時始終使用英語?防止將異常消息轉換爲用戶的語言?

我得到這個消息時,它看起來像有人用Babelfish平臺來翻譯它(這是瑞典): 「System.ComponentModel.Win32Exception:Programmet昆德INTE啓動市場eftersom programmets思達-VID-sidakonfiguration AR felaktig。」

極其無用,Google對它的訪問量高達4次,沒有任何幫助。 所以我必須猜測原始消息是什麼和谷歌。 (這是:「應用程序啓動失敗,因爲它的並排配置不正確。」)

這次找到原始錯誤信息是什麼,開始當然會節省我的時間。

那麼我該怎麼做?

回答

9

你可以嘗試設置Thread.CurrentThread.CurrentUICulture和/或.CurrentCultureCultureInfo("en-US")

+2

如果你改變CurrentCulture,不會改變小數點分隔符,字符串排序,貨幣符號,日期格式等?這將嚴重干擾您的外國用戶 – MarkJ 2009-03-13 15:56:19

+1

以下是全文: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(「en-US」); – epotter 2009-08-19 20:41:01

+2

除了改變文化外,還有其他的可能性,因爲這可能是由申請翻譯的目的而設定的。但是,例外情況不應被翻譯。 .Net安裝中是否有任何軟件包需要刪除? – Juri 2009-11-11 13:48:33

2

如果它是一個ASP.NET應用程序,您可以設置在web.config中的UI語言(*):

<system.web> 
    <globalization ... uiCulture="en-US" ... /> 
</system.web> 

對於其他情況,當前用戶的區域設置默認情況下使用,和你有明確地覆蓋它 - 例如Thread.CurrentUICulture = new CultureInfo(「en-US」)。 (*)注意 - 如果在處理元素之前配置文件中的錯誤導致異常被拋出,您將獲得默認的uiCulture。

2

強制異常顯示在不同的語言似乎有點苛刻的用戶...你可以顯示一個錯誤代碼連同消息?然後用戶將得到他們可以理解的內容,並且可以查找翻譯版本的錯誤代碼。

我不是一個.net人,所以我不知道這是否可能,只是一個想法。

0

如何讓我的應用程序始終 顯示的Win32/.NET 異常的郵件時使用的英語嗎?

首先,不會向用戶顯示win32/.net異常消息。您應該處理異常而不是向用戶顯示它們。

默認情況下,異常消息將以當前的UI語言顯示(如果安裝了適當的語言包,否則它們將回退到英語)。您可以更改異常消息更改Thread.CurrentThread.CurrentUICulture屬性,但它會影響您的應用程序的整個GUI。

3

所有更多的原因爲什麼不應該翻譯(嚴重)的例外。 當記錄異常時,它使muc更有意義用單一語言來完成它。我不敢相信微軟沒有想到這樣做的方式,除了UICulture,這基本上是非選項:(