我可以在Django的set_language重定向视图下面创建i18n switcher用于英语和法语,这就是我在Django中设置翻译(英语和法语)的方式。* 我使用Django 4.2.1:
# "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')),
)
urlpatterns += [
path("i18n/", include("django.conf.urls.i18n"))
]
# "templates/index.html"
{% load i18n %}
<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>
{% translate "Hello" %} {% trans "World" %}
然后,我可以将法语转换为英语,如下所示:
而且,我可以将英语转换为法语,如下所示:
但是,我不知道如何为Django Admin创建它。
那么,如何为Django Admin创建i18n切换器?
1条答案
按热度按时间jyztefdp1#
首先,根据我的回答设置翻译(英语和法语)。
然后,您需要在
core/static/core/admin/css/
中创建custom_admin.css
,并在core/static/core/admin/images/
中准备usa_flag.png
和france_flag.png
,并在core/templatetags/
中创建__init__.py
(空文件)和i18n_switcher.py
,并将base.html从虚拟环境中的django/contrib/admin/templates/admin/base.html
复制到templates/admin/
,如下所示:然后,将下面的代码放入
custom_admin.css
:然后,将下面的代码放入
i18n_switcher.py
:然后,在
<link ... "admin/css/base.css" %}{% endblock %}">
之后添加<link ... 'core/admin/css/custom_admin.css' %}"/>
,并在{% block userlinks %}
之后添加<a ...><img ... 'core/admin/images/usa_flag.png' %}"/></a> /
和<a ...><img ... 'core/admin/images/france_flag.png' %}"/></a> /
,如下所示:现在,您可以通过点击美国国旗将法语切换为英语,如下图所示:
点击【法国国旗】,可以将英语转换为法语,如下图所示:
实际上,您可以在
<div id="container">
之后添加代码<form ...></form>
,如下图所示,在Django Admin中创建英语和法语的i18n切换器:然后,您可以将法语切换为英语,如下所示:
您可以将英语转换为法语,如下所示:
第一种解决方案更好。