2008-10-13 9 views
29

Jak zrobić, aby moja aplikacja zawsze używała języka angielskiego podczas wyświetlania komunikatów o wyjątkach Win32/.net?Uniemożliwianie tłumaczenia komunikatów wyjątków na język użytkownika?

dostałem tę wiadomość, to wygląda jakby ktoś wykorzystywane Babelfish to przetłumaczyć (to szwedzki): "System.ComponentModel.Win32Exception: Programmet kunde inte starta eftersom programmets Sida-vid-sidakonfiguration är felaktig".

Niezwykle pomocna, a Google wykonało dla niej aż 4 trafienia, z których żadna nie była pomocna. Muszę więc zgadnąć, jaka była oryginalna wiadomość i to Google. (Było to: "Uruchomienie aplikacji nie powiodło się, ponieważ jej konfiguracja" obok siebie "jest niepoprawna.")

Tym razem dość proste było sprawdzenie oryginalnego komunikatu o błędzie, po otrzymaniu wiadomości w języku angielskim od Początek oczywiście zaoszczędziłby mi czasu.

Jak to zrobić?

Odpowiedz

9

Możesz spróbować ustawić Thread.CurrentThread.CurrentUICulture i/lub .CurrentCulture na CultureInfo("en-US").

+2

Jeśli zmienisz CurrentCulture, to nie zmieni separatorów dziesiętnych, sortowania ciągów, symboli walutowych , formaty dat itp.?Co poważnie denerwuje zagranicznych użytkowników. – MarkJ

+1

Oto pełna linia: System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo ("en-US"); – epotter

+2

Czy jest inna możliwość niż zmiana Kultury, ponieważ może to być ustawione przez aplikację dla celów tłumaczenia. Wyjątki nie powinny jednak być tłumaczone. Czy są jakieś pakiety do usunięcia w instalacji .Net? – Juri

2

Jeśli jest to aplikacja ASP.NET można ustawić język interfejsu użytkownika w pliku web.config (*):

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

dla innych aplikacji, ustawień regionalnych bieżącego użytkownika są używane domyślnie i masz jawnie nadpisać - np Thread.CurrentUICulture = new CultureInfo ("en-US").

(*) UWAGA - jeśli błąd w pliku konfiguracyjnym spowoduje zgłoszenie wyjątku przed przetworzeniem elementu, otrzymasz domyślny kod uiCulture.

2

Wymuszanie wyjątków do wyświetlania w innym języku wydaje się nieco trudne dla użytkownika ... czy można wyświetlić kod błędu wraz z wiadomością? Następnie użytkownik otrzyma coś, co będzie mógł zrozumieć, i możesz wyszukać kod błędu dla przetłumaczonej wersji.

Nie jestem facetem z sieci .net, więc nie wiem, czy to możliwe, tylko pomysł.

+5

Jestem odbiorcą tej wiadomości, a nie użytkownikiem, który prawdopodobnie nie zrozumiałby komunikatu o błędzie, nawet jeśli był w ich języku . Żaden użytkownik nie powinien widzieć wyjątku, więc muszę go przechwycić i naprawić. Muszę przetłumaczyć je ze szwedzkiego na angielski, zanim będę mógł go zrozumieć. – Nifle

0

Jak zrobić moja aplikacja zawsze używać języka angielskiego podczas wyświetlania Win32/.net wiadomości wyjątki?

Po pierwsze, nie wyświetlaj komunikatów wyjątków win32/.net użytkownikom o nazwie. Powinieneś obsługiwać wyjątki zamiast pokazywać je użytkownikowi.

Domyślnie komunikaty o wyjątkach będą wyświetlane w bieżącym języku interfejsu użytkownika (jeśli zainstalowano odpowiedni pakiet językowy, w przeciwnym razie zostaną one zastąpione angielskim). Możesz zmieniać wiadomości wyjątków zmieniając właściwość Thread.CurrentThread.CurrentUICulture, jednak wpłynie to na cały GUI aplikacji.

+0

Ta aplikacja jest nadal w fazie testowania, więc myślę, że kilka wyjątków pokazanych testerowi jest OK. Jego celem jest jednak ich odnalezienie. Używam zewnętrznego pliku csv dla wszystkich moich ciągów tekstowych, więc mam nadzieję, że zmiana UICulture nie wpłynie na użytkownika. – Nifle

3

Tym bardziej wyjątki nie powinny być tłumaczone (źle). Podczas rejestrowania wyjątków, sprawia, że ​​MUC ma więcej sensu, aby zrobić to w jednym języku. Nie mogę uwierzyć, że Microsoft nie wymyślił sposobu na zrobienie tego innego niż UICulture, które zasadniczo nie jest opcją :(

+0

gorzej. UICUlture nie będzie działać we wszystkich przypadkach. Możesz spróbować ustawić go w wątku, dla niektórych wyjątków to działa, dla innych nie będzie (atm. Dostaję wyjątków w moim języku, chcę ustawić go na angielski dla plików dziennika, ale nie foudn rozwiązania jeszcze który działa we wszystkich przypadkach.) – Offler

Powiązane problemy