Язык справа налево с LANGUAGE_BIDI не работает - PullRequest
8 голосов
/ 08 января 2011

Я строю многоязычный сайт с одним из языков "фарси": До сих пор все работало нормально, но справа налево язык «фарси / персидский» не выравнивается вправо при начале следующей строки текста. Это означает, что следующая строка не выровнена справа как обычно для языков справа налево. Перевод работы.

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

в base.html Я также загружаю:

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

Мой django.po файл для языка «фарси / персидский» выглядит следующим образом: alt text

Как мне это сделать?

Решение: После определения нового класса CSS «article_right_aligned_language» с атрибутом «text-align: right;» и изменив мой базовый шаблон следующим образом, он работает сейчас !!

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

Ответы [ 3 ]

7 голосов
/ 08 января 2011

Выравнивание текста выполняется CSS, а не Django. Установите свойство text-align для элемента контейнера:

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

Затем вы можете применить класс right-aligned-language к вашему контейнеру (или к тому же тегу body) с условным выражением в вашем шаблоне.

1 голос
/ 13 октября 2016

в настоящее время вы должны использовать в CSS:

direction: rtl

http://www.w3schools.com/cssref/pr_text_direction.asp

0 голосов
/ 05 марта 2017

Используйте это вместо этого, пожалуйста:

https://github.com/abbas123456/django-right-to-left

CSS - это стиль, а не контент.

...