我正在尝试使用django-multilingual并正确设置它。但我发现除了模板使用示例之外,django-multilingual的一切都很清楚。
我刚开始使用django,可能因为这个原因,我无法弄清楚如何在模板中切换语言。
你能给出任何示例或更清晰的来源/文档吗?
我刚开始使用django,可能因为这个原因,我无法弄清楚如何在模板中切换语言。
你能给出任何示例或更清晰的来源/文档吗?
在Django中切换语言环境是一个简单的POST请求,可以通过视图实现。
https://docs.djangoproject.com/en/dev/topics/i18n/translation/#the-set-language-redirect-view
在模板中,您可以使用 request.LANGUAGE_CODE 访问语言值。
core/settings.py
中的urlpatterns
中添加path("i18n/", include("django.conf.urls.i18n"))
,如下所示。*根据文档,您不应该在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"))
]
templates/index.html
中添加以下代码:<form action="{% url 'set_language' %}" ...>...</form>
。{% "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" %}