当用户在 Django i18n 翻译中更改语言时如何提供不同的 CSS 文件

How to serve different CSS file when user change language in Django i18n translation

我使用的是Django i18n翻译系统,有两种语言:

LANGUAGES = (
    ('fa', _('Persian')),
    ('en', _('English')),
    )

波斯语是从右到左的,我想在用户将语言更改为波斯语时提供另一个 CSS 文件。 或者当用户更改语言时,也许有更好的方法将 LTR 更改为 RTL?

我在 Ubuntu Ubuntu 上使用 nginxwsgi vps.

一种可能的方式:

我假设您有 2 个 css 文件,例如 static/css/fa.css 和 static/css/en.css

  1. 在模板中,当你 link 你的 css 你可以这样做:

    <link type="text/css" href="{% trans 'static/css/en.css' %}">
    
  2. 在您的波斯语翻译文件中,您输入如下内容:

    msgid "static/css/en.css"
    msgstr "static/css/fa.css"
    

或者,如果您希望 css 做的唯一事情是将 LTR 更改为 RTL,您可以在模板中执行以下操作:

{%load i18n%}
{%get_current_language as LANGUAGE_CODE%}
{%get_language_info for LANGUAGE_CODE as lang%}
....
{% if lang.bidi %}
<!-- Some HTML code for RTL -->
{% else %}
<!-- Some HTML code for LTR -->
{% endif %}

我假设您有以下文件和目录结构:

 /static/fa/css/default.css
 /static/en/css/default.css

然后我会选择:

{% get_static_prefix %}{% get_current_language %}"/css/default.css"