2012-06-11 3 views
6

Ich arbeite an einer relativ einfachen Android App. Ich möchte, dass es eine englische Version sowie eine hebräische Version hat. (RTL Right to Left Alignment)Android Hebräisch (RTL) Integration

Ich habe manuell die Ausrichtung nach rechts in Layout-XML-Datei ändern. Wenn ein Satz Ziffern enthält (in der Mitte davon), erscheinen die Ziffern in einem Spiegel Ansicht: 29 erscheint als 92, 21.45 erscheint als 54:12 und 2000 erscheint als 000,2.

Wenn ein Satz mit Ziffern oder englischen Zeichen beginnt, werden sie bis zum Ende des Satzes geworfen, der alles durcheinander bringt.

Ich denke für Android-Version 4.0.3 unterstützt Hebräisch. Ich habe das im Emulator überprüft.

Also für ältere Versionen gibt es korrekte Möglichkeit, Hebräisch zu implementieren? Bitte helfen.

Antwort

20

Ich denke, dass Android Bidi-Analyse-Algorithmus einige Fehler hat. Unicode hat zwei unsichtbar, stark direktionale Zeichen, die sich mit diesen Problemen helfen könnten:

  • U + 200E - von links nach rechts Marke
  • U + 200F - von rechts nach links Marke

Versuchen Sie für das Problem der Ziffernfolge, auf beiden Seiten der Ziffernfolge Zeichen von links nach rechts (U + 200E) anzubringen.

Unicode hat auch die folgenden bidi Formatierungscodes:

  • U + 202A - von links nach rechts
  • U + 202B Einbettungs - von rechts nach links Einbettungs
  • U + 202C - pop Richtungsformatierung (löscht die vorherige Einbettung oder Override)
  • U + 202D - von links nach rechts Überschreibung
  • U + 202E - von rechts nach links überschreiben

Für das Problem mit englischen Fragmenten in hebräischem Text könnte es so einfach sein wie das Setzen einer Markierung von rechts nach links vor dem Englischen. (Der Algorithmus von Android hat möglicherweise den Eindruck, dass der Absatz von links nach rechts liegt, da die ersten Zeichen Englisch sind.) Wenn das nicht funktioniert, versuchen Sie vielleicht, den ausgewählten Text mit einer Kombination von Formatierungscodes zu umgeben. (Ich würde versuchen, von links nach rechts einzubetten, gefolgt von pop-orientierten Formatierungen. Ich würde auch versuchen, rechts-links-Einbetten um alles mit selektiven expliziten rechts-nach-links-Einbettungen kombiniert.)

Die Art und Weise, wie diese sind soll das Textlayout beeinflussen, werden durch den Unicode Bidirectional Algorithm Unicode Standard Annex #9 definiert. Wenn jedoch die Implementierung von Android kaputt ist (und ich vermute, dass sie es ist), ist das Beste, was Sie tun können, Versuch und Irrtum, bis die Dinge richtig aussehen. Viel Glück.

EDIT

Soweit Code betroffen ist, hier ist ein Beispiel dafür, wie es in Java getan werden könnte:

String text = "גרסה \u200e2.100\u200e זמינה"; 

In XML, könnte es sein: hier

<string name="update_available">גרסה &#x200e;2.100&#x200e; זמינה</string> 
+0

Können Sie einige Code-Format geben für die Anwendung dieser – Nirali

+0

@Nirali Ich habe einige Code –

+0

Sie haben einen Grammatikfehler in Hebräisch - Sie müssen זזןן zu זזנננ ändern – auval

2

ist ein Beispiel aus meinem hebräischen String xml, Dank Ted Hopps Antwort:

müssen Sie '\ u200e' vor t hinzufügen er Zeichen, die bewirkt, dass Sie das Problem:

<string name="basic_text1">המר על תוצאת המשחק\u200e:</string> 

und das Ergebnis wird sein:

:המר על תוצאת המשחק 
+0

Müssen Sie das in jeder Zeile mit hebräischem Text tun? –

+1

so weit ich kann Ich erinnere mich an Runtime, das Sie nicht brauchen, aber Sie müssen es hinzufügen, um es richtig auf dem grafischen Layout zu sehen. –

+0

Müssen Sie eine benutzerdefinierte Schriftart installieren? –