Wie gehe ich mit RTL-Sprachen in Android-Versionen vor 4.2 um?

Hintergrund

TextView hatte immer Probleme mit RTL-Sprachen (Right-To-Left). Da ich nur weiß, wie man Hebräisch liest (zusätzlich zu Englisch), werde ich über seine Probleme sprechen:

Textausrichtung (und ich spreche nicht über die Schwerkraft). Hebräisch ist eine RTL-Sprache, bei der Wörter von rechts nach links geschrieben werden (im Gegensatz zu Englisch, das das Gegenteil ist).

Um zu demonstrieren, wie ärgerlich es ist, stellen Sie sich vor, Sie würden "Hallo Welt" nicht zeigen. Du bekommst normalerweise ".Hallo Welt". Dies könnte leicht behoben werden, wenn Sie es in einem einzigen Satz hätten, aber es ist schwieriger, wenn es mehrere Interpunktionszeichen gibt.

Vokalstellungen. Hebräisch erfordert keine Vokale, um Text zu lesen, aber manchmal ist es sehr schwer, ohne sie zu lesen (insbesondere die Bibel). Für Vokale hat Hebräisch, was "NIKUD" genannt wird, die tatsächlich wie Punkte in den Buchstaben sind. Das Problem bei Android war, dass sie normalerweise am falschen Ort positioniert waren.

Um zu demonstrieren, wie ärgerlich es ist, stellen Sie sich vor, Sie würden "Hallo Welt" nicht zeigen. Du bekommst normalerweise ".eHlol owrld". Selbst wenn Sie versuchen, das Problem zu beheben (setzen Sie die Vokale immer um ein Zeichen nach dem aktuellen Zeichen), war die Position im Buchstaben nicht korrekt (stellen Sie sich vor, das "e" in "Hallo" wäre wie über dem "H", z Beispiel).

Nur in Version 4.2 (readHier(unter "Native RTL-Unterstützung") hat Google alle Probleme im Zusammenhang mit Hebräisch behoben (oder zumindest scheint dies so zu sein).

Das Problem

Die Probleme mit Hebräisch haben dazu geführt, dass jeder israelische Carrier und jeder benutzerdefinierte ROM-Hersteller eine eigene Lösung für die Behebung der verschiedenen Probleme hat. Dies macht es praktisch unmöglich, RTL-Text auf Geräten vor 4.2 zu verarbeiten.

Es kann noch frustrierender werden, wenn der Text sowohl hebräische als auch englische Buchstaben enthält.

Was ich versucht habe

Ich habe viele Websites gelesen, auf denen über diese Probleme gesprochen wurde, und ich habe viele Varianten der Lösungen ausprobiert. Keine hat das Problem auf allen Geräten gelöst:

Einige schlagen vor, das Zeichen '\ u200F' (oder '\ u202D') am Ende / Anfang / an beiden Stellen des Textes einzufügen.

Einige schlagen vor, mitHtml.fromHtml () Methode und etwas Besonderes dort setzen.

Einige schlagen sogar vor, stattdessen das WebView zu verwenden (und möglicherweise zu verwendenWebSettings.setDefaultTextEncodingName () ).

Die Frage

Gibt es eine eindeutige Lösung für dieses Problem?

Ich gehe davon aus, dass das Beste daran ist, dass wir den TextView von Android in eine Bibliothek importieren sollten, die wir verwenden können, aber Google hat noch keine solche Bibliothek bereitgestellt, da Android 4.2 dieses Problem löst und Android Open Source ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage