django-多语言和模板端语言之间的切换

brc7rcf0  于 2023-07-01  发布在  Go
关注(0)|答案(3)|浏览(137)

我正在尝试使用django-multilingual并正确设置它。但我发现,除了一个模板使用示例之外,对于django-multilingual来说,一切都很清楚。
我刚开始使用django,我不知道,也许是因为这个原因,我不知道如何在模板端切换语言。
有没有任何例子,你可以给予或任何'更多'明确的来源/文档有关这一点?

f0brbegy

f0brbegy1#

在django中切换语言环境是一个简单的post do this view
https://docs.djangoproject.com/en/dev/topics/i18n/translation/#the-set-language-redirect-view
在模板中,您可以通过请求访问语言值。LANGUAGE_CODE

h6my8fg2

h6my8fg22#

你也可以试试django-localeurl。它使用户能够切换区域设置,并将当前区域设置存储在URL中。它还提供了几个有用的模板标记,用于切换和显示可用的区域设置。

svujldwt

svujldwt3#

你可以在The set_language redirect view下面创建i18n切换器,但首先,你最好在我的答案下面设置翻译(英语法语),你可以看到my question和我的答案解释如何为Django Admin创建i18n切换器。* 我使用的是Django 4.2.1
然后,将path("i18n/", include("django.conf.urls.i18n"))添加到core/settings.py中的urlpatterns,如下所示。* 根据文档,您不应该在i18n_patterns()中包含path("i18n/", include("django.conf.urls.i18n"))才能正常工作:

# "core/settings.py"

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns(
    path('admin/', admin.site.urls),
    path("my_app1/", include('my_app1.urls')),
)

# ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Here ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
urlpatterns += [
    path("i18n/", include("django.conf.urls.i18n"))
]

然后,将<form action="{% url 'set_language' %}" ...>...</form>添加到templates/index.html,如下所示:

{% "templates/index.html" %}

{% load i18n %}

{% ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Here ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ %}
<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}">
    <select name="language">
        {% get_current_language as LANGUAGE_CODE %}
        {% get_available_languages as LANGUAGES %}
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go">
</form>
{% ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Here ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ %}

{% translate "Hello" %} {% trans "World" %}

现在,您可以将英语切换为法语,如下图所示:

并且,您可以将法语切换为英语,如下图所示:

相关问题