2011-01-11 11 views
2

Ich verwende Struts2 Internationalisierung, um Englisch & Arabisch zu unterstützen.Struts2 + Internationalisierung + Java

Ich möchte wissen, dass es möglich ist, die Position des Etiketts dynamisch zu ändern, das vor jeder Eingabe (Text, Datum usw.) kommt, wenn sich das Gebietsschema ändert?

z.

LTR -> Englisch -> Vorname - "Input Textfeld"

RTL -> Arabisch -> "Eingabetextfeld" - أول اسم

Eine mögliche Lösung für dieses?

BR SC

Antwort

4

Entweder (ab) verwenden java.awt.ComponentOrientation

String direction = ComponentOrientation.getOrientation(locale).isLeftToRight() ? "ltr" : "rtl"; 

(seinen Quellcode obwohl ziemlich trivial ist, gibt es nur 4 Sprachen sind die RTL sind, ist hier ein Auszug von Relevanz)

public static ComponentOrientation getOrientation(Locale locale) { 
    String lang = locale.getLanguage(); 
    if ("iw".equals(lang) || "ar".equals(lang) || "fa".equals(lang) || "ur".equals(lang)) { 
     return RIGHT_TO_LEFT; 
    } else { 
     return LEFT_TO_RIGHT; 
    } 
} 

Oder legen Sie es in einem Recourbebundle selbst.

this.direction = ltr 

Und es lesen als

String direction = bundle.getString("this.direction"); 

In beiden Fällen folgt, können Sie davon Gebrauch machen, die Richtung entsprechend zu ändern.

<html dir="${direction}"> 

die als <html dir="ltr"> oder <html dir="rtl"> in generierten HTML enden würde.

+0

Hallo, vielen Dank. Ich habe "this.direction" zu meinen beiden Ressourcen-Paketen 'en' und 'ar' hinzugefügt. Und ich verwende auf Tabellenebene wie folgt: "

". Aber das funktioniert nicht. Vermisse ich etwas? Muss ich eine Klasse erweitern? Bitte erläutern Sie diesen Teil, ich möchte, dass ich das ändere, wenn ich das Gebietsschema ändere. BR SC – SmoothCriminel

+0

Haben Sie die '$ {direction}' eingestellt? – BalusC

+0

Entschuldigung für meine Ignoranz. Aber wo muss ich es einstellen? Innerhalb Jsp? Oder auf andere Weise? BR. SC. – SmoothCriminel

0

Nicht so weit ich weiß.

Nachrichten können lokalisiert werden und Argumente haben, um mit Währungssymbolen und ähnlichem umgehen zu können, aber ich habe kein vorgefertigtes Framework gesehen, das die Reihenfolge der Seiten von links nach rechts und von rechts nach links verarbeiten kann.

Meine Vermutung ist, dass Sie Seiten, Teile von Seiten mit Kacheln dienen müssen oder die if else-Anweisungen selbst schreiben.