Lokalizacja komunikatu pobieranego z javy

0

Mam taki problem, wpisuje gdzies tam w programie niepoprawnie date i lapie sobie wyjatek, wyswietlam go w ten sposob:
<code = java>
JOptionPane.showMessageDialog(null, e.getMessage() , "Informacja", JOptionPane.ERROR_MESSAGE);

aplikacja zwraca mi ladne okienko, w ktorym e.getMessage() generuje komunikat JAVY
<b>
Unparseable Date: "2008-1909"</b>

(jak widac zapomnialem myslnika po 19 wstawic)
chcialbym 'Unparseable Date' wyswietlac w jezyku polskim i zeby to dzialalo na cala aplikacje, poniewaz odwolan do e.getMessage() jest cale mnostwo w kontekscie daty, a wklepywanie wszedzie stringa z palca z wlasnym komunikatem (zamiast e.getMessage()) nie wchodzi w gre, czy moge jakos przykryc ta metode e.getMessage, badz przechwytywac ponad aplikacja odwolanie do tego komunikatu, podmieniac go i zeby do aplikacji wracala juz polska wersja? Przy czym, jesli aplikacje dam komus to u niego tez ma dzialac po polsku, a nie tak, zeby musial np. grzebac w jakis plikach i tez podmieniac sobie na polski tem komunikat.
Dzieki za wszelkie podpowiedzi, jak sie do problemu zabrac.
0

Poruszyłeś tak na prawdę dwie kwestie:

  1. Obsługa wyjątków - pokazywanie userowi komunikatu e.getMessage() nie jest dobrym rozwiązaniem. Skoro już udało ci się złapać wyjątek, to zamiast wbudowanego komunikatu (który generalnie jest przeznaczony dla programisty, nie dla użytkownika) pokaż w okienku swój własny. A żeby to zrobić profesjonalnie, zapoznaj się z kwestią nr 2.
  2. Internacjonalizacja - polega w dużym uproszczeniu na wyekstrachowaniu z kodu aplikacji wszystkich łańcuchów tekstowych, które są widoczne dla użytkownika, i umieszcznie ich w pliku properties. Wtedy możesz mieć nawet kilka wersji językowych aplikacji (dla każdego języka tworzysz osobny plik properties), a na dodatek program sam wybierze odpowiednią wersję językową w zależności wersji językowej OSu. Polecam lekturę http://java.sun.com/docs/books/tutorial/i18n/index.html. Jeśli nie chcesz używać internacjonalizacji, pozostaje zapisanie komunikatu w jakiejś stałej i używanie jej w kontekście tego wyjątku w całej aplikacji.

Jeśli zaś chodzi o podmianę komunikatu wbudowanego w klasę DateFormat, to nie jest to możliwe. Jeśli zajrzysz do źródła tej klasy, znajdziesz zahardcodowany text.

1 użytkowników online, w tym zalogowanych: 0, gości: 1