GWT Internationalisierung
Posted by Daraku in Code, tags: GWT, Internationalisierung, JavaHallo zusammen,
da ich mich in der letzten Zeit mit der Internationalisierung unter GWT ( Google Web Toolkit – Wiki – Homepage ) beschäftigt habe und es teilweise nicht einfach war wollte ich mal die Lösung an dem Standard GWT Beispiel hier zur Verfügung stellen.
Was muss gemacht werden?
Zunächst brauchen wir eine Datei die z.B. “MyConstants.properties”. Dort werden die “Schlüssel” reingeschrieben z.B.
“HelloWorld = Hello World”. Dies ist die default Datei, wenn der GWT Browser geladen wird dann wird aus dieser Datei die “Schlüssel” geladen.
Beispiel:
1 2 | helloworld = Hello World. clickme = Click me. |
Alle anderen Dateien, für die Internationalisierung müssen den gleichen Namen wie die Default-Datei besitzen jedoch mit “[...]_de.properties” für Deutsch. Beispiel: “MyConstants_de.properties”
Ein weiterer Punkt ist in der “
1 2 3 | <!-- Internationalization --> <extend-property name='locale' values='de' /> <extend-property name='locale' values='en' /> |
Danach brauchen wir eine Datei die sich dann “MyConstants.java” nennt. Dort kommt dann das Interface mit den Methoden rein. Bei mir sieht das wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package <packageName>; import com.google.gwt.i18n.client.Constants; /** * Interface for Internationalization in GWT * */ public interface MyConstants extends Constants { String helloworld(); String clickme(); } |
So, nachdem wir dann auch diese Datei haben können wir uns an das Hauptthema wenden. Wir haben die Properties-Datein, wir haben das Interface nun kommen wir zur Haupt-Datei.
Zu Beginn suchen wir uns den “Entry Point” und fügen dort folgene Zeile ein.
1 2 3 4 | public class <KlassenName> implements EntryPoint { MyConstants constants = (MyConstants) GWT.create(MyConstants.class); [...] |
Nachdem wir das nun auch haben können wir die “Schlüssel” verwenden. Das sieht wie folgt aus (Beispiel aus der “Test Application” von GWT selber)
1 2 3 4 5 | public void onModuleLoad() { final Button button = new Button(constants.clickme()); [...] |
Hier wird ein Button erstellt. Was man sehr gut sehen kann ist , dass wir für den Text im Button nun die Funktion clickme() aufrufen die dann den entsprechenden Schlüssel aufruft und anhand des locale-Parameters (später dazu mehr) die entsprechende Sprache dazu aufgerufen und ausgegeben wird.
Der locale-Parameter wird ganze einfach verwendet. Indem man in der URL ein “?locale=” anhängt und nach dem Gleichheitszeichen noch die Abkürzung benutzt ( Deutsch = de, Englisch = en, Japanisch = jp etc. ) sowie die Seite neu lädt wird die entsprechende Sprache geladen. Will man Beispielsweise (in meinem Beispiel wurde die default-Datei bzw. default-Sprache geladen) Deutsch angezeigt bekommen muss 1. die Datei MyConstants_de.properties existieren und es muss in der URL “
1 | <extend-property name='locale' values='de' /> |
stehen damit es richtig Funktioniert.
Habe ich was vergessen? Ich denke nicht. Wurde das gemacht müsste es funktionieren. Das blöde an der Sache ist nur das man die Seite neu laden muss um eine andere Sprache zu wählen. ( Jedenfalls ist das auch bei dem GWT-Example zur Internationalisierung auch so )
Hier nochmal alle meine Dateien:
Test.gwt.xml:
show
MyConstants.properties
show
MyConstants_de.properties
show
MyConstants.java
show
Test.java
show

Entries (RSS)