python / django - bidi Klammern Problem in HTML-Auswahlliste

8

Ich führe python2.7 mit django 1.4.

Ich habe den folgenden Code in meiner views.py-Seite, der die Sprachnamen in einer Auswahlliste zurückgibt:

Python-Code: (views.py)

%Vor%

HTML-Code:

%Vor%

Liste auswählen:

%Vor%

Das Problem ist, wenn die Seite in einer rtl-Sprache wie Arabisch angezeigt wird, wird die Auswahlliste wie folgt mit den Klammern des ltr-Textes an den falschen Stellen gerendert:

%Vor%

Wie schreibe ich den Code in die Datei view.py, um die bidi-Klammern korrekt anzuzeigen?

Ich habe eine ganze Reihe von Threads gelesen und viele verschiedene Möglichkeiten ausprobiert, um das Problem zu beheben, aber mir sind die Ideen ausgegangen.

Ein Versuch, der nicht funktionierte, bestand darin, die Sprachnamen mit den Unicode-Steuerzeichen (Richtungszeichen) zu speichern & amp; # 8234; &Ampere; # 8236; &Ampere; rlm; in der Datei view.py - der & amp; # 8234; &Ampere; # 8236; &Ampere; rlm; wird in die Auswahlliste auf der Seite gerendert. Zum Beispiel:

& amp; # 8234; Spanien (Portugal)) / português (Brasilien) & amp; # 8236; &Ampere; rlm;

Auch das Hinzufügen des folgenden zum css hat keine Auswirkung:

%Vor%     
user1261774 12.05.2014, 10:03
quelle

3 Antworten

3

In Ihrem Beispiel mit arabischem Text wurde die vorherrschende Richtung des Textes von rechts nach links eingestellt. Eine Klammer nimmt die Richtung der vorherrschenden Sprache an, wenn sie zwischen einem Text von rechts nach links und von links nach rechts ist. Wenn Sie in Ihrem Beispiel den Text ändern würden, um ein Wort nach den Klammern zu haben, würde das Problem verschwinden. Ich würde vorschlagen, dass Sie es mit zusätzlichen Wörtern testen, um die Lösung zu verstehen.

Das ist umständlich und für Ihren Produktionscode würde ich eine andere Lösung vorschlagen. Angenommen, Sie wissen, dass die Klammern nur in Ihren Sprachen von links nach rechts vorkommen, müssen Sie die Klammer mit einem Unicode-Steuerzeichen beenden (versuchen Sie dies manuell zu Ihrem Test hinzuzufügen). Also meine Lösung in diesem Fall ist nur die Klammern zu ersetzen, mit Klammern und Steuerzeichen:

%Vor%

Offensichtlich müssen Sie, wenn Sie Klammern in Ihren Sprachen von rechts nach links haben, zuerst testen, welche Richtung use_language_code hat, und dann gegebenenfalls nur die Muttersprache aktualisieren (ltr in rtl und umgekehrt) ...

    
cchristelis 22.05.2014, 08:05
quelle
1

Ich frage mich, ob es schlechte Daten für Ihre arabische Konvertierung gibt. Haben Sie versucht, Ihre Nachrichten neu zu kompilieren?

%Vor%     
Jeff Sheffield 16.05.2014 17:22
quelle
0

um das BiDi Bracket Problem zu lösen: Sie müssen nur das LRM Zeichen nach der letzten Klammer hinzufügen. HTML-Entität: ‎

%Vor%     
josef 02.09.2014 12:35
quelle

Tags und Links