在我的po文件中,某些字符串已翻译,但其他字符串未翻译:
msgid "Hello there"
msgstr "Hallo du"
msgid "Goodbye"
msgstr ""
按预期,这会透明地回退-我看到Goodbye
,尽管没有翻译文本。但是,这些字符串很容易被忽略(尤其是在语言非常相似的情况下)。
有没有一种方法可以为未翻译的字符串添加注释,以使其显示为
UNTRANSLATED:Goodbye/UNTRANSLATED
在用户界面中,我的测试用户可以知道该字符串不是最终字符串吗?
答案 0 :(得分:0)
您可以像这样对猴子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('\r\n'), 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