突出显示未翻译的 Django 字符串



在我的po文件中,一些字符串被翻译,但其他字符串没有:

msgid "Hello there"
msgstr "Hallo du"
msgid "Goodbye"
msgstr ""

正如预期的那样,这透明地回退 - 我看到Goodbye尽管没有翻译文本。但是,这些字符串很容易被忽略(特别是如果语言非常相似(。

有没有办法为未翻译的字符串添加注释,使其显示为

UNTRANSLATED:Goodbye/UNTRANSLATED

在用户界面和我的测试用户可以知道字符串还不是最终的吗?

你可以像这样对django.utils.translation.trans_real.do_translate进行猴子补丁:

from django.conf import settings
from django.utils.safestring import SafeData, mark_safe
from django.utils.translation import trans_real
def highlight_untranslated():
def monkeypatched_do_translate(message, translation_function):
eol_message = message.replace(
str('rn'), str('n')).replace(str('r'), str('n'))
if len(eol_message) == 0:
result = type(message)("")
else:
trans_real._default = (
trans_real._default or
trans_real.translation(settings.LANGUAGE_CODE))
translation_object = getattr(
trans_real._active, "value", trans_real._default)
result = getattr(
translation_object, translation_function)(eol_message)
# Untranslated string? If so, add a warning
default_catalog = getattr(trans_real._default, '_catalog', None)
if default_catalog and eol_message in default_catalog:
catalog = getattr(translation_object, '_catalog', None)
if catalog and eol_message not in catalog:
result = '__UNTRANSLATED:%s/UNTRANSLATED__' % eol_message
if isinstance(message, SafeData):
return mark_safe(result)
return result
trans_real.do_translate = monkeypatched_do_translate

最新更新