2011-01-08 11 views
7

Estoy construyendo un sitio en varios idiomas con uno de los idiomas "farsi": Todo funcionó bien hasta el momento, pero el idioma de derecha a izquierda es "farsi/persian" no está alineado a la derecha, al comenzar una siguiente línea de texto. Eso significa que la siguiente línea no está alineada a la derecha como es habitual para los idiomas de derecha a izquierda. El trabajo de traducción.django lenguaje de derecha a izquierda con LANGUAGE_BIDI no funciona

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 %} 

en los base.html I también carga:

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

Mi django.po archivo de lenguaje "farsi/persa" se parece a: alt text

¿Cómo puedo manejar esto?

Solución: Después de definir una "article_right_aligned_language" nueva clase CSS con el atributo "text-align: right;" y modificando mi plantilla base de la siguiente manera, ¡funciona ahora!

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

Surely 'text-align: right'. –

Respuesta

7

La alineación de texto está manejada por CSS no Django. Establecer la propiedad text-align en el elemento contenedor:

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

continuación, puede aplicar la clase right-aligned-language a su contenedor (o cuerpo de la etiqueta para el caso) con una sentencia condicional en su plantilla.

+0

¡Funciona bien! Muchas gracias por su rápida respuesta. – saeed

Cuestiones relacionadas