使用LANGUAGE_BIDI的django从右到左的语言不起作用

时间:2011-01-08 01:28:08

标签: django internationalization multilingual

我正在使用其中一种语言“farsi”构建一个多语言网站: 到目前为止,一切工作都很顺利,但是当开始下一行文本时,右翼语言“波斯语/波斯语”没有正确对齐。这意味着下一行不会像往常一样从右到左语言对齐。 翻译工作。

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

“farsi / persian”语言的 django.po 文件如下所示: alt text

我该如何管理?

解决方案: 在使用属性“text-align:right;”定义新的css类“article_right_aligned_language”之后并修改我的基本模板如下,它现在工作!

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

3 个答案:

答案 0 :(得分:7)

文本对齐由CSS而不是Django处理。在容器元素上设置text-align属性:

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

然后,您可以使用模板中的条件语句将类right-aligned-language应用于容器(或者此类问题的正文标记)。

答案 1 :(得分:1)

现在你应该在CSS中使用:

direction: rtl

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

答案 2 :(得分:0)

请使用此代替:

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

CSS代表风格而非内容。