SWT Right To Left (arabische Schrift)

Status
Nicht offen für weitere Antworten.

Saxony

Top Contributor
Hiho,

ich habe grad folgendes Problem. Ich möchte arabische Schrift auf einem Button darstellen. Die Werte dazu kommen aus einer Properties Datei:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Some comment</comment>
<entry key="Value1">جديد لسان</entry>
<entry key="Value2">اللغة العربية</entry>
<entry key="Value3">شاورما‎</entry>
</properties>

Nun möchte ich diese richtig auf einem Button anzeigen:

Java:
Button btn = new Button(parent, SWT.RIGHT_TO_LEFT);
btn.setText(properties.getProperty("Value3"));
		
StyledText text = new StyledText(parent, SWT.RIGHT_TO_LEFT);
text.setText(properties.getProperty("Value3"));

Bei der StyledText Komponente klappt es richtig herum, aber bei dem Button steht es rückwärts da!?

Was muss ich da bei so einem Button machen?

bye Saxony
 
Zuletzt bearbeitet:

Saxony

Top Contributor
Um es mal zu verdeutlichen folgendes Bild:

saxony-albums-test-picture27-arabic.png


v.l.n.r ein TableViewer, Button, StyledText.

Bei den ersten beiden Komponenten sind die Buchstaben noch verkehr herum. Mit Styled Text klappt es.

Ich habe jetzt gelesen, dass Button und so gar kein SWT.RIGHT_TO_LEFT unterstützen. Nur wir kann man dennoch waagerechte linksläufige Schriften in so einer Komponente anzeigen?

bye Saxony
 

Saxony

Top Contributor
Hiho,

saxony-albums-test-picture28-arabic2.png



naja - hehe - nun ist schon mal die ganze Anwendung umgekrempelt. Aber leider ist der Text an sich immer noch falsch herum ausser bei StyledText. Mit dem TextProcessing habe ich auch keine Ahnung wie das gehen soll. Dort ist immer die Rede von FilePaths, Folders, usw. Und man soll die Locale setzen. Wie mache ich das bei Eclipse? Ich kenne nur die java.util.Locale Variante.

Java:
Locale.setDefault(new Locale("ar_SA"));

Leider steht Arabisch und RCP im Pflichtenheft - kann man nix machen. Obwohl ich hab ja die Pflichtenhefte geschrieben... - schau mer mal

bye Saxony
 
G

Gast2

Gast
Ist es in Arabien auch üblich, dass die ganze Anwendung von rechts nach links ist??
Menu? Die Frame Operation(Schließen,Kleiner machen usw.) usw.
Sieht iwie scheiße aus^^...

Du kannst deinem Programm mit -nl die Location mitgeben...
 
Zuletzt bearbeitet von einem Moderator:

Saxony

Top Contributor
Ist es in Arabien auch üblich, dass die ganze Anwendung von rechts nach links ist??
Menu? Die Frame Operation(Schließen,Kleiner machen usw.) usw.
Sieht iwie scheiße aus^^...

Hmm gute Frage - das weiß ich noch gar nicht. Bisher habe ich auch nur "normale" Anwendungen gesehen, wo aber alle Texte und Eingabefelder von recht nach links verlaufen. Muss ich wenn ich in Kuwait bin mal nachfragen ob es denen komplett recht nach links auch gefällt. ;)

Du kannst deinem Programm mit -nl die Location mitgeben...

Meinst du so hier?

C:\Applications\install\Eclipse_RCP\eclipse -nl ar_SA

Das Problem ist aber folgendes:

Ich habe einen Ordner namens "lang" dort stehen n property Files drinne. Also "english.xml", "german.xml" und eben auch "arabic.xml". Nun startet meine RCP Anwendung und der Nutzer kann sich eine Sprache aus den installierten Sprachpaketen auswählen. Dann klickt er OK und sofort(!) muss eigentlich die komplette App auf seine Sprache umgerüstet werden. Also Texte, Orientierung, Datumsformate, Währungen, Zahlen usw. usf. is ne endlose Geschichte ;)

Eine Möglichkeit wäre die App nach Sprachwahl neu zu starten mit -nl <lang>. Tja ka! :)

bye Saxony
 
G

Gast2

Gast
Hmm gute Frage - das weiß ich noch gar nicht. Bisher habe ich auch nur "normale" Anwendungen gesehen, wo aber alle Texte und Eingabefelder von recht nach links verlaufen. Muss ich wenn ich in Kuwait bin mal nachfragen ob es denen komplett recht nach links auch gefällt. ;)



Meinst du so hier?

C:\Applications\install\Eclipse_RCP\eclipse -nl ar_SA

Das Problem ist aber folgendes:

Ich habe einen Ordner namens "lang" dort stehen n property Files drinne. Also "english.xml", "german.xml" und eben auch "arabic.xml". Nun startet meine RCP Anwendung und der Nutzer kann sich eine Sprache aus den installierten Sprachpaketen auswählen. Dann klickt er OK und sofort(!) muss eigentlich die komplette App auf seine Sprache umgerüstet werden. Also Texte, Orientierung, Datumsformate, Währungen, Zahlen usw. usf. is ne endlose Geschichte ;)

Eine Möglichkeit wäre die App nach Sprachwahl neu zu starten mit -nl <lang>. Tja ka! :)

bye Saxony


Jop genau du musst deinen -nl paramter umbiegen... welche eclipse target platform verwendest du da gabs schon ziemlich viele bugs dazu...
also in 3.2.2 und glaub 3.3.1 gehts ohne hack nicht...
musst mal bissl googlen dazu ich weiß die Seite grad nicht mehr
Also ich würde den nl erstmal lassen so wie er im OS eingestellt ist und dann kann der User aussuchen...
dann musst du den NL paramter umbiegen(neu setzen) und startest die komplette workbench dann neu(gibts in eclipse eine methode) und dann greift dein neuer nl paramter.

EDIT:
http://www.java-forum.org/plattformprogrammierung/71966-rcp-language-packs.html

Schau mal was ich hier noch hab ^^ des müsste eigentlich passen...
für die Sprachauswahl... Da ist der bug kannst nachschauen ob er schon gefixed ist... und wie man es machen kann
 
Zuletzt bearbeitet von einem Moderator:

Wildcard

Top Contributor
-nl stellt nicht nur die Sprache um, sondern alles (Formats usw.), also sollte man vermeiden eine Dialog anzubieten der von sich behauptet die Sprache zu verstellen, dann aber das ganze Locale umhaut. Für die Sprache ist das Property user.language zuständig.

@Saxony
Letztlich sind das doch alles native Widgets die eigentlich auch einen gewissen Support für BiDi mitbringen sollten. Hast du eine Linux Kiste zur Verfügung? Versuch dort mal das native Locale umzustellen und schau nach ob das einen Einfluss auf die Anwendung hat, denn ich könnte mir vorstellen das bei den nativen Widgets einen Unterschied macht ob das OS denkt du bist Left-To-Right, oder Right-To-Left.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben