Выделите непереведенные строки Django - PullRequest
0 голосов
/ 18 сентября 2018

В моем po-файле некоторые строки переведены, а другие нет:

msgid "Hello there"
msgstr "Hallo du"

msgid "Goodbye"
msgstr ""

Как и предполагалось, это прозрачно отступает - я вижу Goodbye, хотя переведенного текста нет. Однако эти строки можно легко пропустить (особенно если языки очень похожи).

Есть ли способ добавить примечание для непереведенных строк, чтобы оно отображалось как

UNTRANSLATED:Goodbye/UNTRANSLATED

в пользовательском интерфейсе, и мои тестовые пользователи могут знать, что строка еще не окончательная?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете сделать обезьяну-патч 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...