Ich führe python2.7 mit django 1.4.python/django - bidi klammern problem in html select list
Ich habe den folgenden Code in meiner views.py Seite, die die Sprachnamen in einer Auswahlliste zurückgibt:
Python-Code: (views.py)
available_languages = []
for lv in language_versions:
language = LANGUAGES[lv.language_code]
if lv.language_code == user_language_code:
language_label = (lv.language_code, u"%s" % (language.name_native))
else:
language_label = (lv.language_code, u"%s/%s" % (language.name, language.name_native))
available_languages.append(language_label)
....
available_languages = sorted(available_languages, key=lambda x: x[1], cmp=compare)
return available_languages
HTML-Code:
{{ field }}
Auswahlliste:
German/Deutsch
Polish/polski
Portuguese (Brasil)/português (Brasil)
Spanish (Latin America)/español (Latinoamérica)
Russian/pусский
Das Problem ist, wenn die Seite in einer rtl Sprache wie Arabisch betrachtet wird die Auswahlliste wiedergegeben wird, wie mit den Klammern des ltr Textes in den falschen Positionen folgt:
لألمانية/Deutsch
البولندية/polski
البرتغالية) لبرتغال)/português) Portugal)
لإسبانية أمريكا) اللاتينية)/español) Latinoamérica)
الروسية/pусский
Wie Ich schreibe den Code in der Datei view.py, um die bidi-Klammern korrekt anzuzeigen.
Ich habe einige Threads gelesen und viele verschiedene Möglichkeiten ausprobiert, um das Problem zu beheben, aber mir sind die Ideen ausgegangen.
Ein Versuch, der nicht funktionierte, war das Büchsen der Sprachnamen mit den Unicode-Kontroll- (Richtungs-) Zeichen & # 8234; & # 8236; & rlm; in der Datei view.py - & # 8234; & # 8236; & rlm; wird in die Auswahlliste auf der Seite gerendert. Zum Beispiel:
& # 8234; إسبانية أمريكا) اللاتينية)/português (Brasil) & # 8236; & rlm; wenn seine schlechte Daten für Ihre Arabisch Umwandlung
direction: rtl; unicode-bidi: embed
Haben Sie versucht https://pypi.python.org/pypi/django-right-to-left/0.1.1? –
Ich habe nicht versucht, Django-rechts-nach-links, weil das Problem immer noch aufgrund der Mischung von RTL, Ltr und neutralen Text auftreten würde. Die Klammer wird als neutrales Textfeld betrachtet. – user1261774
Haben Sie versucht, die Unicode-Steuerzeichen direkt in die Quelle einzubetten (in 'LANGUAGES')? Ich würde denken, dass das Hinzufügen dieser Steuerzeichen zu views.py keinen Sinn macht, da Sie nicht wissen, ob es im voraus eine RTL- oder LTR-Sprache sein wird. – user193130