2011-01-08 12 views
7

Buduję wielojęzyczną stronę z jednym z języków "farsi": Wszystko działało dobrze, ale od prawej do lewej wersji językowej "farsi/perski" nie jest wyrównany w prawo, gdy rozpoczyna się kolejny wiersz tekstu. Oznacza to, że następna linia nie jest wyrównana z prawej jak zwykle dla języków od prawej do lewej. Tłumaczenie pracy.Język Django od prawej do lewej z LANGUAGE_BIDI nie działa

settings.py

gettext = lambda s: s 

#default language should be german 
LANGUAGE_CODE = 'de' 
#LANGUAGE_CODE = 'en' 
#LANGUAGE_CODE = 'fa' 


LANGUAGES = (
    #('fr', gettext('French')), 
    ('de', gettext('German')), 
    ('en', gettext('English')), 
    ('fa', gettext('Farsi')), 
    #('pt-br', gettext("Brazil")), 
) 

language_chooser.html

{% load localeurl_tags %} 
{% load i18n %} 
{% load tabs %} 


{% for lang in LANGUAGES %} 
     {% ifequal lang.0 LANGUAGE_CODE %} 
      <li class="active"><a>{{ lang.1 }}</a></li> 
     {% else %} 

<!-- 
     {% if LANGUAGE_BIDI %} 
      <li>The current language is bidirectional</li> 
     {% else %} 
      <li>The current language is <b>not</b> bidirectional</li> 
     {% endif %} 
--> 
      <li class="{% ifactivetab "en" %}active{% else %}inactive{% endifactivetab %}"><a href="{{ request.path|chlocale:lang.0 }}" accesskey="2">{{ lang.1 }}</a></li> 
     {% endifequal %} 
{% endfor %} 

w base.html ja również obciążenie:

{% load i18n %} 
{% get_current_language as LANGUAGE_CODE %} 
{% get_available_languages as LANGUAGES %} 
{% get_current_language_bidi as LANGUAGE_BIDI %} 

plik Moja django.po dla „Perski/Perska” języka wygląda następująco: alt text

Jak zarządzać tym?

Rozwiązanie: Po zdefiniowaniu nowej klasy css "article_right_aligned_language" z atrybutem "text-align: right;" i modyfikowanie mojego szablonu bazowego w następujący sposób działa teraz!

 <div {% if LANGUAGE_BIDI %} class="article_right_aligned_language" {% else %} class="article"> {% endif %} 
     {% block site_wrapper %}{% endblock %} 
     </div> 
+1

Z pewnością "wyrównywanie tekstu: prawo". –

Odpowiedz

7

Wyrównanie tekstu jest obsługiwane przez CSS, a nie przez Django. Ustaw właściwość text-align na elemencie pojemnika:

.container.right-aligned-language { 
    text-align: right; 
} 

Następnie można zastosować klasę right-aligned-language do pojemnika (lub tagu ciała dla tej sprawy) z warunkowym oświadczenia w szablonie.

+0

Działa dobrze !! Dziękuję bardzo za szybką odpowiedź. – saeed