Marcin Stelmaszyk wrote:
04-06-07, Marcin Kawelski <[EMAIL PROTECTED]> napisał(a):
   pytanko do javowców, jest jakaś standardowa klasa (lub mechanizm) do
obsługi wielu języków w kontrolkach swinga? Jak to sie realizuje?

dość prosto. Tutorial Suna:
http://java.sun.com/docs/books/tutorial/i18n/index.html

A ja może dorzucę jeszcze parę słów z własnego doświadczenia.

W eclipse np. jest dosyć przyjemna funkcja - Source > Externalize Strings. Aplikację z "hardcodowanymi" stringami można bardzo szybko przekształcić na w pełni lokalizowalną. Wykorzystywany jest standardowy mechanizm ResourceBundle. Eclipse dodaje jednak by default klasę pośredniczącą Messages (można to konfigurować). Gdybym miał robić lokalizację na niewielką skalę, skorzystał bym z ładowania zasobów lokalizowalnych statycznie przez classloader w ramach tej samej klasy, np.:



import java.util.ResourceBundle;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class LocalizedSwing {

    private static final ResourceBundle MESSAGES =
        ResourceBundle.getBundle("messages");

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame frame =
                   new JFrame(MESSAGES.getString("frame.title"));
                   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                   frame.getContentPane().add(
                     new JLabel(MESSAGES.getString("test.text")));
                   frame.pack();
                   frame.setVisible(true);
            }
        });
    }

}


Można też pobawić się w coś w rodzaju:

private static final ResourceBundle MESSAGES =
    ResourceBundle.getBundle(LocalizedSwing.class.getName());

I mieć zawsze specyficzne messages dla specyficznej klasy.


Na większą skalę użył bym mechanizmów lokalizacji z jakiegoś framework - np. Netbeans RPC, ale wtedy też pewnie i całą aplikację oparł bym na jakimś Rich Client Platform.


--
"Meaning is differential not referential"

Kazimierz Pogoda
Nordic Consulting & Development Company         http://www.ncdc.pl/

Odpowiedź listem elektroniczym