Wie werden gemischte RTL- und LTR-Sprachen in Benachrichtigungen gehandhabt?

9

Hintergrund

Android 4.3 hat eine Menge Unterstützung für RTL-Sprachen (Right-To-Left) wie Hebräisch und Arabisch hinzugefügt.

Das Problem

Auch wenn es "textDirection", "layoutDirection" und "gravity" gibt, kann ich die Äquivalente für den Notification Builder nicht finden, nicht einmal in der Kompatibilitätsbibliothek.

Dies bedeutet, dass wenn hebräische und englische Wörter zusammen vorkommen, die Reihenfolge falsch ist. Zum Beispiel (und ich schreibe in Englisch für Einfachheit):

Anstelle von "X, das Y genannt wird", erhält man "Y genanntes X" (angenommen "genannt" ist ein Wort auf Hebräisch), da die Zeichenkette in diesem Format sein soll:

%Vor%

Hinweis: X und Y können entweder RTL- oder LTR-Wörter (und gerade Zahlen) sein.

Die Voraussetzungen sind, dass im Hebräischen das Wort rechts X, dann das Wort "genannt" (aber natürlich auf hebräisch) und dann Y links sein sollte. Wie ich im Beispiel der englischen Analogie gezeigt habe, ist es genau umgekehrt.

Was ich versucht habe

a. Ich habe versucht, die Dokumentation zu durchsuchen, und alles, was ich gefunden habe, ist, dass ich wahrscheinlich das Layout überschreiben muss, aber das ist keine gute Lösung. Die Gründe:

  1. Ich verwende möglicherweise nicht das korrekte Styling von Android.
  2. Es ist nicht zukunftssicher für die nächsten Android-Versionen, die möglicherweise ein anderes Styling verwenden.
  3. Der Tickertext wird nicht unterstützt.

b. Ich habe auch versucht zu untersuchen, welche Sonderzeichen die Textrichtung unterschiedlich machen, und es funktionierte, indem am Anfang und Ende des Textes '\ u200f' hinzugefügt wurde, aber es hat ein paar Fehler:

  1. es ist nicht so flexibel wie die anderen Attribute.
  2. Ich bin mir nicht sicher, ob ich den offiziellen Weg nutze, um dieses Problem zu lösen.
  3. Ich muss dies jedes Mal hinzufügen, wenn ich eine Benachrichtigung verwende
  4. Es funktioniert überhaupt nicht für TickerText. nur für Benachrichtigungen und selbst dann nicht für alle Fälle.

Hier ist ein Beispielcode:

%Vor%

c. Ich könnte auch zwischen der '1' und '2' in der Zeichenfolge wechseln, aber dies behandelt nicht alle Fälle, und es ist noch verwirrender für die Übersetzer.

Die Frage

Gibt es eine Möglichkeit, den Benachrichtigungsersteller Texte korrekt behandeln zu lassen (für Benachrichtigungen und TickerText)?

Irgendeine Möglichkeit, es zu optimieren, ohne tatsächlich völlig neue Layouts für die Benachrichtigungen (oder Zeichenketten ändern) zu erstellen, die nicht im selben nativen Stil von Android sind?

Was ist der offizielle Weg, um so etwas zu handhaben?

    
android developer 22.09.2014, 14:23
quelle

1 Antwort

0

OK, eine Antwort gefunden, basierend auf diese , this und dies .

Für den obigen Fall:

% 1 $ s wird% 2 $ s

genannt

Um es korrekt in Hebräisch zu ändern, müssen Sie das Sonderzeichen "\ u200f" als solches hinzufügen:

%Vor%

Sie können auch prüfen, ob das aktuelle Gebietsschema RTL ist, bevor Sie diese Lösung verwenden. Beispiel:

%Vor%

Das Ergebnis:

    
android developer 12.08.2017, 10:26
quelle