You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Django Admin创建i18n语言切换器?

为Django Admin添加语言切换器的实现方法

步骤1:复制并自定义Admin基础模板

Django Admin的页面结构由内置模板控制,你需要复制核心模板到项目目录进行修改:

  1. 找到Django Admin模板的安装路径,执行命令:
    python -c "import django; print(django.__path__[0] + '/contrib/admin/templates/admin/')"
    
  2. 将该路径下的base.html文件复制到你项目的templates/admin/目录中(如果admin子目录不存在,自行创建)。

步骤2:在Admin模板中添加语言切换表单

打开复制后的templates/admin/base.html,找到{% block usertools %}区块(这是Admin顶部用户工具区域,适合放置语言切换器),在区块内添加以下代码:

{% load i18n %}
<form action="{% url 'set_language' %}" method="post" style="display: inline; margin-left: 15px;">
    {% csrf_token %}
    <input name="next" type="hidden" value="{{ request.path }}">
    <select name="language" onchange="this.form.submit()" style="padding: 3px; border-radius: 4px;">
        {% 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>
</form>

这段代码会生成一个下拉选择框,选择语言后自动提交表单,跳转回当前Admin页面的对应语言版本。

步骤3:确认多语言配置(确保已有)

检查你的core/settings.py中是否包含以下配置(你之前的前端切换应该已经配置过,这里再次确认):

USE_I18N = True

# 定义支持的语言
LANGUAGES = [
    ('en', 'English'),
    ('fr', 'Français'),
]

# 翻译文件存放路径
LOCALE_PATHS = [
    BASE_DIR / 'locale',
]

效果验证

启动Django服务,访问Admin页面,你会在顶部用户区域(用户名旁边)看到语言切换下拉框,选择对应语言后,Admin界面会自动切换为目标语言,且所有Admin内置文本(如按钮、菜单、提示)都会被翻译(前提是你已经生成了对应的语言翻译文件)。


内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:20:28