Sto eseguendo python2.7 con django 1.4.problema di parentesi python/django - bidi in html select list
ho il seguente codice nella mia pagina views.py che restituisce i nomi delle lingue in un elenco di selezione:
codice Python: (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
codice HTML:
{{ field }}
selezionare lista:
German/Deutsch
Polish/polski
Portuguese (Brasil)/português (Brasil)
Spanish (Latin America)/español (Latinoamérica)
Russian/pусский
Il problema è quando la pagina viene visualizzata in una lingua RTL come l'arabo la lista di selezione è reso come segue, con le staffe del testo ltr nelle posizioni sbagliate:
لألمانية/Deutsch
البولندية/polski
البرتغالية) لبرتغال)/português) Portugal)
لإسبانية أمريكا) اللاتينية)/español) Latinoamérica)
الروسية/pусский
Come fare Scrivo il codice nel file view.py per visualizzare correttamente le parentesi bidi?
Ho letto un bel po 'di thread e ho provato molti modi diversi per risolvere il problema, ma ho esaurito le idee.
Un tentativo che non ha funzionato è stato il bookending dei nomi di lingua con i caratteri di controllo (direzionale) Unicode & # 8234; & # 8236; & rlm; nel file view.py - & # 8234; & # 8236; & rlm; viene visualizzato nell'elenco di selezione nella pagina. Per esempio:
& # 8234; إسبانية أمريكا) اللاتينية)/Português (Brasil) & # 8236; & rlm;
aggiungendo inoltre quanto segue alla css non ha alcun effetto:
direction: rtl; unicode-bidi: embed
Hai provato https://pypi.python.org/pypi/django-right-to-left/0.1.1? –
Non ho provato django-right-left-left perché il problema si verificava ancora a causa della combinazione di rtl, ltr e testo neutro. la parentesi è considerata un campo di testo neutro. – user1261774
Hai provato a incorporare i caratteri di controllo Unicode direttamente nella sorgente (in 'LANGUAGES')? Penserei che aggiungere quei caratteri di controllo a views.py non ha senso dato che non sai se sarà un linguaggio RTL o LTR prima del tempo. – user193130