如何在 Django 中翻译 Javascript 标准错误消息?

Hen*_*ryM 6 javascript django language-translation

我有几个使用翻译的 Django 项目,除了表单上的 Javascript 错误消息无法翻译之外,一切都工作正常。

例如,在我的登录表单上,如果我只需按 Enter 键,无论我选择了英语、法语、德语还是任何其他语言,我都会收到英语的 JS 错误消息“请填写此字段”。这不是我的 JS 错误消息,如果我运行manage.py makemessages -d djangojs,那么该消息不会显示出来进行翻译,所以我认为我不需要通过该过程进行纠正。

谁能告诉我如何确保用户收到其语言的 JavaScript 错误消息。谢谢

Rei*_*ica 3

文档你应该使用django-admin makemessages -d djangojs -l de,而不是python manage.py ...,还要确保你django-admin compilemessages之后运行。

如果仍然不起作用,您可以尝试使用该trans标记,然后使用模板上的事件侦听器手动添加错误消息。

页面顶部:

{% load trans %}
Run Code Online (Sandbox Code Playgroud)

对于纯 JavaScript:

var inputs = document.querySelectorAll("input");

inputs.forEach(function(input) {
  if (input.hasAttribute("required")) {
    input.oninvalid = function() {
      this.setCustomValidity("{% trans 'Please fill in this field' %}");
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

jQuery:

$("input[required]").on("invalid", function() {
    this.setCustomValidity("{% trans 'Please fill in this field' %}");
});
Run Code Online (Sandbox Code Playgroud)

如果此解决方案不适用于您的特定用例,文档将详细介绍各种替代方案。