运行`django-admin makemessages`时如何忽略Django的.po文件中已经翻译的字符串

Mar*_*óth 5 django internationalization

我的 Django 应用程序使用了一些已经在 Django 中翻译的字符串。在密码重置过程的自定义模板中,我想使用一些原始文本,例如在完成重置过程后提示用户登录的文本。

自定义模板包含<p>{% trans "Your password has been set. You may go ahead and log in now." %}</p>直接取自原始表单文件

运行后django-admin makemessages我的 .po 文件包含以下内容:

#: core/templates/auth/password-reset-complete.html:10
msgid "Your password has been set.  You may go ahead and log in now."
msgstr ""
Run Code Online (Sandbox Code Playgroud)

翻译工作正常,呈现的页面已包含正确的翻译字符串。是否可以自动忽略 .po 文件中的这个空翻译?简单地删除它只会在我makemessages再次运行之前有效。它已经被翻译了,在我的 .po 文件中复制它似乎没有必要。

Ove*_*Ove 5

您可以尝试在将字符串传递给 之前将其放入变量中trans,这样就makemessages不会注意到它。就像是

{% with mystr="Your password has been set.  You may go ahead and log in now." %}
{% trans mystr %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建自己的自定义模板标记,该标记只需在其参数上调用gettext(from django.utils.translation),并使用它而不是trans