/* * $Header: /cvs/CVS_LEBA/common/jstd/src/java/com/obrctm/app/console/TextWindow.java,v 1.5 2003/10/29 13:13:00 pitek Exp $ * * Copyright 2003 OBR Centrum Techniki Morskiej, All rights reserved. */ package com.obrctm.app.util; import java.util.ResourceBundle; /** * Klasa pomocnicza zwracająca ResourceBundle dla podanej klasy. *

* Zakłada się, że dla każdego pakietu wymagającego lokalizacji * tworzony jest plik i18n.properties (i odpowiednie wersje * dla każego locale) w katalogu pakietu. Do pliku dostajemy * za pośrednictwem standardowych mechanizmów javy. *

* Należy w każdej lokalizowanej klasie utworzyć pole statyczne * i18n typu ResourceBundle i zainicjować * je korzystając z metody getBundle(). Lokalizowany * tekst pobieramu metodą getString() *

 * class SomeClass {
 *     private static java.util.ResourceBundle i18n
 *             = com.obrctm.app.util.I18N.getBundle(SomeClass.class);
 * (...)
 *     jButtonCancel.setText(i18n.getString("L_SomeClass_cancel");
 * 
* Lokalizowany string posiada prefiks L_ aby lepiej wyróżniał * się spośród innych napisów. Dodatkowo umieszczamy nazwę klasy, * której dotyczy napis - jest to przydatne, gdy w pakiecie jest wiele * klas wymagających lokalizacji. Na końcu dodajemy frazę wyróżniającą * dany string (np. dla przycuisku Cancel jest to cancel). * Cały lokalizowany string-klucz powinien być pisany po angielsku. *

* Lokalizację aplikcji najlepiej realizować w czasie pisania kodu. * NetBeans zawiera wsparcie dla wstawiania lokalizowanych napisów * (CTRL+SHIFT+J) w kodzie. GUI builder zawiera również wsparcie * przy wstawianiu properties dla beans'ów (należy wybrać format: * {identifier}.getString("{key}")). * * @version $Header: /cvs/CVS_LEBA/common/jstd/src/java/com/obrctm/app/console/TextWindow.java,v 1.5 2003/10/29 13:13:00 pitek Exp $ * @author pitek */ public class I18N { private I18N() { } /** * Zwraca ResourceBundle dla podanej klasy. * Plik i18n.properties szukany jest w katalogu określonym * przez pakiet, do którego klasa należy. * @param clazz klasa, dla której szukamy resource'ów. * @throws MissingResourceException jeżeli nie ma pliki i18n.properties * w katalogu pakietu podanej klasy. */ public static ResourceBundle getBundle(Class clazz) { return ResourceBundle.getBundle(clazz.getPackage().getName() + ".i18n"); } }