© Liashko/Shutterstock.com
Entwickler Magazin
Internationalisierung mit GWT und Spring

Global mit GWT

Für moderne Webanwendungen ist es mittlerweile Standard, Internationalisierung anzubieten und in weiterer Folge das User Interface in mehrere Sprachen bzw. für mehrere Länder zu übersetzen. Das Google Web Toolkit (GWT) und das Spring Framework bieten bereits Möglichkeiten an, um Internationalisierung in eigene Anwendungen einzubauen.

Markus Popp


Um in einer Anwendung ein durchgängiges Internationalisierungskonzept zu bekommen, muss einmalig eine Infrastruktur aufgesetzt werden, die die beiden Frameworks Spring und GWT miteinander kombiniert. Ist diese Konfiguration einmal geschaffen, wird es dem Programmierer bei zukünftigen Erweiterungen der Anwendung erleichtert, diese auch mehrsprachig zu gestalten.

In diesem Artikel wird unter der Beachtung von client- und serverseitigen Teilen einer Anwendung ein solches Konzept vorgestellt. Im Besonderen wird dabei auch auf die Aspekte, die bei der Verwendung der GWT RequestFactory zur Client-Server-Kommunikation beachtet werden müssen, eingegangen.

GWT-Internationalisierung Out of the Box

GWT unterstützt Internationalisierung in der Form von „Static String Internationalization“. Das heißt, dass bereits während des Kompilierens Texte in der lokalisierten Form in den generierten HTML- bzw. JavaScript-Code eingesetzt werden. Dies hat den Vorteil, dass vom GWT-Compiler zusätzliche Überprüfungen durchgeführt werden können, wie zum Beispiel die Sicherstellung, dass alle Texte in jede Sprache übersetzt wurden. Um dies zu erreichen, muss nur ein eigenes Interface definiert werden, das das Constants- bzw. das Messages-Interface erweitert. Vom GWT-Compiler werden dann automatisch aus diesem Interface und den zugehörigen Properties-Dateien pro Sprache die entsprechenden Implementierungen erstellt:

Constants-Interface [2]: Für Constants-Interfaces werden vom Compiler Typüberprüfungen durchgeführt, sodass für Methoden mit einem bestimmten Return-Typ auch nur Werte des entsprechenden Typs in den Properties-Dateien definiert sein dürfen. Messages-Interface [3]: In einem Messages-Interface können Texte mit Parametern, wie in der Java-Klasse java.text.MessageFormat spezifiziert, definiert werden.

Listing 1: Constants und Messages-Interfaces und deren Verwendungpublic interface I18nUIConstants extends Constants { int digitsAfterDecimalPoint(); // value in the properties must also be an integer}public interface I18nUIMessages extends Messages { String hello(String name); @DefaultMessage("Defaulttext") String defaultText(); // @DefaultMessage -> can be omitted in the properties-file} void greet(String name) { I18nUIMessages messages = GWT.create(I18nUIMessages.class); Window.alert(messages.hello(name));}

Benötigte Properties für die Interfaces aus Listing 1:

# I18nUIConstants_en.properties:digitsAfterDecimalPoint=2# I18nUIMessages_en.properties:hello=Hello {0}!

Im Beis...

Entwickler Magazin
Internationalisierung mit GWT und Spring

Global mit GWT

Für moderne Webanwendungen ist es mittlerweile Standard, Internationalisierung anzubieten und in weiterer Folge das User Interface in mehrere Sprachen bzw. für mehrere Länder zu übersetzen. Das Google Web Toolkit (GWT) und das Spring Framework bieten bereits Möglichkeiten an, um Internationalisierung in eigene Anwendungen einzubauen.

Markus Popp


Um in einer Anwendung ein durchgängiges Internationalisierungskonzept zu bekommen, muss einmalig eine Infrastruktur aufgesetzt werden, die die beiden Frameworks Spring und GWT miteinander kombiniert. Ist diese Konfiguration einmal geschaffen, wird es dem Programmierer bei zukünftigen Erweiterungen der Anwendung erleichtert, diese auch mehrsprachig zu gestalten.

In diesem Artikel wird unter der Beachtung von client- und serverseitigen Teilen einer Anwendung ein solches Konzept vorgestellt. Im Besonderen wird dabei auch auf die Aspekte, die bei der Verwendung der GWT RequestFactory zur Client-Server-Kommunikation beachtet werden müssen, eingegangen.

GWT-Internationalisierung Out of the Box

GWT unterstützt Internationalisierung in der Form von „Static String Internationalization“. Das heißt, dass bereits während des Kompilierens Texte in der lokalisierten Form in den generierten HTML- bzw. JavaScript-Code eingesetzt werden. Dies hat den Vorteil, dass vom GWT-Compiler zusätzliche Überprüfungen durchgeführt werden können, wie zum Beispiel die Sicherstellung, dass alle Texte in jede Sprache übersetzt wurden. Um dies zu erreichen, muss nur ein eigenes Interface definiert werden, das das Constants- bzw. das Messages-Interface erweitert. Vom GWT-Compiler werden dann automatisch aus diesem Interface und den zugehörigen Properties-Dateien pro Sprache die entsprechenden Implementierungen erstellt:

Constants-Interface [2]: Für Constants-Interfaces werden vom Compiler Typüberprüfungen durchgeführt, sodass für Methoden mit einem bestimmten Return-Typ auch nur Werte des entsprechenden Typs in den Properties-Dateien definiert sein dürfen. Messages-Interface [3]: In einem Messages-Interface können Texte mit Parametern, wie in der Java-Klasse java.text.MessageFormat spezifiziert, definiert werden.

Listing 1: Constants und Messages-Interfaces und deren Verwendungpublic interface I18nUIConstants extends Constants { int digitsAfterDecimalPoint(); // value in the properties must also be an integer}public interface I18nUIMessages extends Messages { String hello(String name); @DefaultMessage("Defaulttext") String defaultText(); // @DefaultMessage -> can be omitted in the properties-file} void greet(String name) { I18nUIMessages messages = GWT.create(I18nUIMessages.class); Window.alert(messages.hello(name));}

Benötigte Properties für die Interfaces aus Listing 1:

# I18nUIConstants_en.properties:digitsAfterDecimalPoint=2# I18nUIMessages_en.properties:hello=Hello {0}!

Im Beis...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang