Есть ли способ выбрать имя переменной для msgid в переводе django?

В настоящее время я полагаюсь на переводы django, и мне интересно узнать, есть ли способ выбрать msgid для перевода на основе имени переменной

Например:

name = _('Some Name')

msgid "name"
msgstr "Some Name"

Я хочу, чтобы msgid соответствовал имени переменной, но не могу найти способ в документации.

Строка msgid не может быть перезаписана, она является исходной строкой для перевода. Но вы можете использовать функцию django.utils.translation.pgettext() для предоставления контекстной информации:

from django.utils.translation import pgettext

# Use pgettext to specify a custom ID and the original string
print(pgettext("variable_name", "Some Name"))

В файле .po это будет выглядеть так:

msgctxt "variable_name"
msgid "Some Name"
msgstr ""

На случай, если ваша строка нуждается во множественном числе, существует функция django.utils.translation.npgettext():

from django.utils.translation import npgettext

def show_items(count):
    message = npgettext(
        'variable_name',
        'You have one apple',
        'You have {count} apples',
        count
    )
    print(message.format(count=count))

show_items(1) # Output: You have one apple
show_items(3) # Output: You have 3 apples

В файле .po это будет выглядеть так:

msgctxt "variable_name"
msgid "You have one apple"
msgid_plural "You have {count} apples"
Вернуться на верх