Mehrsprachige Anwendungen (Internationalisierung)
Texte auslagern
-
Zu übersetzende Anwendungstexte können im Markup mit
wicket:messageausgelagert werden:<wicket:message key="someKey">some placeholder</wicket:message>
-
Alternativ können Übersetzungen mit einem
ResourceModelerreicht werden:add(new Label("someLabel", new ResourceModel("someKey", "some default value")));
-
Alternativ können über
LocalizerTexte für Komponenten abgefragt werden:getLocalizer().getString("someKey", "some default value")
Ablage von Übersetzungen
-
Die Texte werden in
Property Resource Bundlesabgelegt:someKey=Some translated value someOtherKey=Some other translated value
-
Alternativ können die Übersetzungen in XML-Dateien abgelegt werden (insb. da
PropertiesimmerISO-8859-1kodiert sind):<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <entry key="someKey">Some translated value</entry> <entry key="someOtherKey">Some other translated value</entry> </properties>
Auflösung von Übersetzungen
-
Wicket sucht zunächst parallel zur Komponente, z.B.
SomeForm.propertiesbzw.SomeForm.xml -
Danach geht Wicket die Komponentenhierarchie bis zum Wurzelelement ab und versucht eine Übersetzung zu finden (z.B. in einer
SomePage.propertiesoderBasePage.properties) -
Dabei wird jeweils mit dem aktuellen Locale mit Fallback gesucht:
SomePage_de_DE.properties SomePage_de.properties SomePage.properties
-
Gehört der Key zu einer Komponente, wird zunächst nach
componentId.someKeygesucht, danach nachsomeKey.
Sprachauswahl
-
Das
Localewird bei der Erzeugung der Web-Session automatisch anhand des HTTP-HeadersAccept-Languageermittelt (Einstellung der bevorzugten Sprache im Browser). -
Zugriff erfolgt mit
Session.get().getLocale/setLocale, z.B.:add(new Link("german") { public void onClick() { Session.get().setLocale(Locale.GERMAN); } public boolean isEnabled() { return !Locale.GERMAN.equals(Session.get().getLocale()); } });
Übersetzung von Validierungsmeldungen
- Bezeichnungen für Komponenten werden automatisch anhand der ID in Property-Files nachgeschlagen oder können mit
formComponent.setLabelexplizit gesetzt werden. - Validierungsmeldungen können für die Anwendung überschrieben werden, siehe
org.apache.wicket.application_*.propertiesfür die Standard-Texte bzw. die Key-Bezeichnungen.

