Есть ли способ выбрать имя переменной для 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"