Django中{% trans %}生效但{% blocktrans %}翻译失效问题求解
问题原因与修复方案
- 核心匹配错误:你在
{% blocktrans %}标签内填写的msgid前后带有换行、缩进空白,Django多语言提取工具makemessages会完整保留这些空白生成msgid,和你手动写在.po文件里无空白的纯大写msgid无法匹配,因此不会触发翻译。
两种修复方式二选一即可:- 把标签和字符串写在同一行,去掉多余空白:
{% blocktrans with USERNAME=worker.username MANAGER=manager.username %}LOGIN_INFORMATION_FOR_USER_HAVE_BEEN_RESET_BY_MANAGER{% endblocktrans %}- 给
blocktrans添加trimmed参数,自动过滤前后空白:
{% blocktrans trimmed with USERNAME=worker.username MANAGER=manager.username%} LOGIN_INFORMATION_FOR_USER_HAVE_BEEN_RESET_BY_MANAGER {% endblocktrans %} - 编译验证:修改.po文件后需要执行
compilemessages命令生成最新的.mo二进制文件,重新部署后修改才会生效。 - 排查技巧:可以直接查看
makemessages自动生成的.po文件对应条目,确认自动提取的msgid实际内容,避免手动编写的msgid和实际提取结果不匹配。
内容的提问来源于stack exchange,提问作者0xDr0id
相关产品推荐
相关产品推荐

