Django i18n: перевод с идентификаторами и языком по умолчанию - PullRequest
0 голосов
/ 14 января 2020

1) Как я могу использовать идентификаторы для моего перевода вместо фактической строки в Django?

2) Как определить язык по умолчанию?

Пример:

Вместо обычного django way => {% trans "Это заголовок, который иногда меняется"%}

Я хочу использовать.

{% mytrans "specificpage_seo_title"%}

И если указанная строка c недоступна на текущем языке, она должна вернуться к языку по умолчанию / резервному.

В настоящее время моя реализация выглядит так и работает:

class SimpleNode(Node):

    def __init__(self, inputstr):
        self.inputstr = inputstr

    def render(self, context):
        return self.inputstr


@register.tag("mytrans")
def mytrans(parser, token):
    inputstr = token.split_contents()[1].replace("\"", "")
    transstr = _(inputstr)

    if inputstr == transstr: # If equal fall back to english
        lang = get_language().split('-')[0]
        activate('en')
        transstr = _(inputstr)
        activate(lang)

    else:
        return do_translate(parser ,token)

    return SimpleNode(transstr)

Если у кого-то есть лучший способ написать эту функцию =>, пожалуйста, дайте мне знать.

Я пытаюсь закодировать это поведение для {% blocktrans%}. Любая идея, как это сделать?

Ссылка на текущую Django реализацию: https://github.com/django/django/blob/master/django/templatetags/i18n.py

...