在 Django 项目中实现前端按钮文本的国际化翻译,核心是利用框架内置的 i18n 模块和模板翻译标签,将界面文字与代码逻辑分离,通过语言文件统一管理不同语言的表述。

开启 Django 国际化配置
首先要在项目的 settings.py 中启用国际化支持,并设置可用语言种类。下面是常见配置示例:
# settings.py 国际化相关配置
LANGUAGE_CODE = 'zh-hans'
USE_I18N = True
USE_L10N = True
# 支持的语言列表
LANGUAGES = (
('zh-hans', '简体中文'),
('en', 'English'),
)
# 语言文件所在目录,默认是 locale
LOCALE_PATHS = [
BASE_DIR / 'locale',
]
在模板中标记按钮文本
Django 模板提供了 trans 标签用来包裹需要翻译的字符串。按钮文本应写为可翻译形式,而不是硬编码中文或英文。
{% load i18n %}
<button type="submit">{% trans "Submit" %}</button>
<button type="button">{% trans "Cancel" %}</button>
如果按钮内包含变量,可以使用 blocktrans 标签:
{% load i18n %}
{% blocktrans %}Hello, {{ user_name }}{% endblocktrans %}
生成并翻译语言文件
在项目根目录执行下列命令,让 Django 扫描模板与代码中的待翻译文本:
python manage.py makemessages -l en python manage.py makemessages -l zh_Hans
执行后会在 locale 目录下生成 .po 文件,打开 en/LC_MESSAGES/django.po 补充英文翻译:
msgid "Submit" msgstr "Submit" msgid "Cancel" msgstr "Cancel"
简体中文若需调整,可在 zh_Hans 对应文件中填写:
msgid "Submit" msgstr "提交" msgid "Cancel" msgstr "取消"
翻译完成后编译语言文件:
python manage.py compilemessages
切换语言并验证按钮
可以通过中间件或视图切换用户语言。最简单的方式是在模板中添加语言切换表单:
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="language" type="hidden" value="en" />
<button type="submit">English</button>
</form>
配置 url 引入 Django 自带语言视图:
from django.conf.urls.i18n import i18n_patterns
from django.urls import path
urlpatterns = i18n_patterns(
path('setlang/', include('django.conf.urls.i18n')),
)
常见问题说明
- 若按钮文本未翻译,检查是否执行 compilemessages 且语言代码书写正确。
- 模板中必须使用
{% load i18n %}才能使用 trans 标签。 - msgid 字符串在代码中需完全一致,包括大小写与空格。
按照上述步骤,前端按钮文本就能根据用户选择的语言自动渲染对应翻译,实现低成本的多语言支持。