如何在 Django 前端 JavaScript 中实现按钮文本的国际化翻译
发布时间 - 2026-01-21 00:00:00 点击率:次本文介绍如何结合 django 内置 i18n 机制,在前端 javascript 对象中动态翻译按钮文案,无需修改原始 html 结构,兼容现有 vue/react 或纯 js 项目。
在 Django 构建多语言网站时,模板中的 {% trans %} 标签可轻松处理服务端渲染内容的翻译,但前端 JavaScript 对象(如按钮配置、状态提示等)默认无法被 Django 模板引擎解析。针对这类场景,推荐采用「服务端预注入翻译字符串」的方式——即在 HTML 模板中提前将翻译后的文本以变量形式注入全局作用域或内联
✅ 正确做法:服务端生成翻译后传入前端
首先,在对应 Django 模板(如 base.html 或页面模板)的
或 底部添加:然后在你的 JavaScript 配置文件(或内联脚本)中直接使用:
const configButton = {
purchases: {
attr: 'data-out',
default: {
class: 'button_style_blue',
text: '' + window.translations.addToList
},
active: {
class: 'button_style_light-blue-outline',
text: '' + window.translations.recipeInList
}
}
};⚠️ 注意事项:确保已启用 Django 国际化中间件(django.middleware.locale.LocaleMiddleware)并正确配置 LANGUAGES 和 LOCALE_PATHS;所有 trans 模板标签中的字符串需被 makemessages 扫描到(建议统一用英文书写,避免硬编码中文);若使用 gettext Python 函数(如原答案所示),仅适用于服务端 Python 代码,不能直接在浏览器 JS 中调用——该方式在原答案中存在概念混淆,实际不可行;必须通过模板渲染或 API 接口传递翻译结果。
? 进阶建议:支持动态语言切换
如需在不刷新页面的前提下切换语言,可配合 Django REST Framework 提供一个翻译接口:
# views.py
from django.utils.translation import gettext as _
from django.http import JsonResponse
def get_translations(request):
return JsonResponse({
'addToList': _('Add to purchase list'),
'recipeInList': _('Recipe in purchase list'),
})前端通过 fetch() 获取实时翻译,并更新 configButton,实现无感语言切换。
总之,Django 的国际化能力强大,但 JavaScript 层需遵循「服务端提供翻译 → 前端消费」的原则。避免尝试在浏览器中直接调用 Python 的 _() 函数,而应善用模板变量注入或轻量 API,确保翻译准确、可维护且符合 Django 最佳实践。
# vue
# react
# javascript
# python
# java
# html
# js
# 前端
# json
# go
# 编码
# 浏览器
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何自定义分页视图?(Pagination示例)
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
免费网站制作appp,免费制作app哪个平台好?
javascript日期怎么处理_如何格式化输出
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
JavaScript实现Fly Bird小游戏
Swift中switch语句区间和元组模式匹配
如何快速启动建站代理加盟业务?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
zabbix利用python脚本发送报警邮件的方法
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Android自定义控件实现温度旋转按钮效果
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
详解CentOS6.5 安装 MySQL5.1.71的方法
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
网站建设要注意的标准 促进网站用户好感度!
如何快速生成凡客建站的专业级图册?
中山网站制作网页,中山新生登记系统登记流程?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何用花生壳三步快速搭建专属网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
详解jQuery中基本的动画方法
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
独立制作一个网站多少钱,建立网站需要花多少钱?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】

