© Excellent backgrounds/Shutterstock.com
Java Magazin
Right-to-Left-Unterstützung in Android

Verdrehte Welt

Software funktioniert global. Ein einzelner Entwickler mag eine App in einem kleinen Dorf irgendwo auf unserem Erdball entwickeln. Sichtbar wird sie in den diversen App Stores auf der ganzen Welt. Internationalisierung von Apps ist daher ein wichtiges Thema. Der Probleme mit unterschiedlichen Zahlen-, Datums- und Währungsformatierungen sind sich viele Entwickler bewusst. Auch wenn es um Sprachunterstützung geht, weiß der Android-Entwickler, dass man die Übersetzungen in XML-Dateien ablegt und das System die Arbeit übernimmt. In einigen Fällen stimmt dies leider nicht ganz.

Danny Preußler


Unsere Sprache entstammt der lateinischen und ist eine waagerechte, rechtsläufige Schrift [1]. Das ist jedoch nicht in allen Sprachen der Fall. Die so genannten sunnitischen Sprachen, beispielsweise Hebräisch und Arabisch, sind waagerechte linksläufige Schriften, d. h., man liest sie von rechts nach links. Was hat das für Auswirkungen auf unsere App, auf das Design? Was muss man beachten? Dieser Artikel versucht, ein wenig Licht ins Dunkel zu bringen.

Die Unterstützung von Right to Left (RTL) in An­droid-Telefonen ist mittlerweile sehr gut [2]. Beachtet man einige Regeln, wird die App recht passabel in diesen Sprachen. Auch wird dem Entwickler, ob er will oder nicht, RTL mehr und mehr in Form von Warnungen im Android Studio begegnen.

Textrichtung

Der offensichtliche Unterschied der Leserichtung muss sich in allen Texten, die wir in unserer App haben, widerspiegeln. Das Schöne ist, dass Android uns dabei hilft. Ein hebräischer Text wird vom System bereits korrekt dargestellt, die Wörter laufen von rechts nach links. Wo wir dem Telefon jedoch helfen müssen, ist anzugeben, wie wir uns die Ausrichtung des Texts innerhalb des UI vorstellen.

Ein Text, der links ausgerichtet ist, soll vermutlich im Hebräischen rechts ausgerichtet sein. Gibt man einer TextView keine weiteren Anweisungen bez. der Ausrichtung, passiert auch genau das. Wenn wir die Ausrichtung jedoch manuell festsetzen z. B. mittels android:gravity="left", dann wird das Telefon auch bei einer RTL-Sprache den Text links ausrichten. Dies ist vermutlich nicht der gewünschte Effekt.

Wie können wir also die Orientierung selbst bestimmten, ohne dadurch die RTL-Unterstützung zu stören? Um dieses Problem zu beheben, wurden mit API-Level 17 (Android 4.2) die neuen Schlüsselwörter start bzw. end eingeführt, die in der App anstelle von left und right Verwendung finden sollten. Start ist als der Anfang eines Texts gedacht, in der westlichen Hemisphäre also links, in RTL-Sprachen jedoch rechts bedeutend. Wenn man dies beachtet, hat man den ersten Schritt zur Unterstützung einer neuen Zielgruppe geschafft. Seit Kurzem warnt uns auch das Lint-Werkzeug aus dem Android SDK hierüber:

Use "start" instead of "left" to ensure correct behavior in right-to-left-locales

Dies ist ein schönes Beispiel für die Wichtigkeit von solchen Warnungen, auf die man am besten mit einer Zero Toler­ance Policy anstrebt, um keine dieser Hinweise zu verpassen. Auf diese Weise kann ein Verstoß, z. B. automatisiert auf dem Jenkins, als instabil...

Java Magazin
Right-to-Left-Unterstützung in Android

Verdrehte Welt

Software funktioniert global. Ein einzelner Entwickler mag eine App in einem kleinen Dorf irgendwo auf unserem Erdball entwickeln. Sichtbar wird sie in den diversen App Stores auf der ganzen Welt. Internationalisierung von Apps ist daher ein wichtiges Thema. Der Probleme mit unterschiedlichen Zahlen-, Datums- und Währungsformatierungen sind sich viele Entwickler bewusst. Auch wenn es um Sprachunterstützung geht, weiß der Android-Entwickler, dass man die Übersetzungen in XML-Dateien ablegt und das System die Arbeit übernimmt. In einigen Fällen stimmt dies leider nicht ganz.

Danny Preußler


Unsere Sprache entstammt der lateinischen und ist eine waagerechte, rechtsläufige Schrift [1]. Das ist jedoch nicht in allen Sprachen der Fall. Die so genannten sunnitischen Sprachen, beispielsweise Hebräisch und Arabisch, sind waagerechte linksläufige Schriften, d. h., man liest sie von rechts nach links. Was hat das für Auswirkungen auf unsere App, auf das Design? Was muss man beachten? Dieser Artikel versucht, ein wenig Licht ins Dunkel zu bringen.

Die Unterstützung von Right to Left (RTL) in An­droid-Telefonen ist mittlerweile sehr gut [2]. Beachtet man einige Regeln, wird die App recht passabel in diesen Sprachen. Auch wird dem Entwickler, ob er will oder nicht, RTL mehr und mehr in Form von Warnungen im Android Studio begegnen.

Textrichtung

Der offensichtliche Unterschied der Leserichtung muss sich in allen Texten, die wir in unserer App haben, widerspiegeln. Das Schöne ist, dass Android uns dabei hilft. Ein hebräischer Text wird vom System bereits korrekt dargestellt, die Wörter laufen von rechts nach links. Wo wir dem Telefon jedoch helfen müssen, ist anzugeben, wie wir uns die Ausrichtung des Texts innerhalb des UI vorstellen.

Ein Text, der links ausgerichtet ist, soll vermutlich im Hebräischen rechts ausgerichtet sein. Gibt man einer TextView keine weiteren Anweisungen bez. der Ausrichtung, passiert auch genau das. Wenn wir die Ausrichtung jedoch manuell festsetzen z. B. mittels android:gravity="left", dann wird das Telefon auch bei einer RTL-Sprache den Text links ausrichten. Dies ist vermutlich nicht der gewünschte Effekt.

Wie können wir also die Orientierung selbst bestimmten, ohne dadurch die RTL-Unterstützung zu stören? Um dieses Problem zu beheben, wurden mit API-Level 17 (Android 4.2) die neuen Schlüsselwörter start bzw. end eingeführt, die in der App anstelle von left und right Verwendung finden sollten. Start ist als der Anfang eines Texts gedacht, in der westlichen Hemisphäre also links, in RTL-Sprachen jedoch rechts bedeutend. Wenn man dies beachtet, hat man den ersten Schritt zur Unterstützung einer neuen Zielgruppe geschafft. Seit Kurzem warnt uns auch das Lint-Werkzeug aus dem Android SDK hierüber:

Use "start" instead of "left" to ensure correct behavior in right-to-left-locales

Dies ist ein schönes Beispiel für die Wichtigkeit von solchen Warnungen, auf die man am besten mit einer Zero Toler­ance Policy anstrebt, um keine dieser Hinweise zu verpassen. Auf diese Weise kann ein Verstoß, z. B. automatisiert auf dem Jenkins, als instabil...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang