Я использую Pelican версии 3.7.1 и пытаюсь заставить работать несколько языков. У меня есть некоторые переменные в pelicanconf.py, которые я тоже хочу перевести. Вот пример:
theme / mytheme / templates / base. html
{% trans %}{{ MY_EMPTY_TEXT }}{% endtrans %}
При извлечении с использованием pybabl и init / update в моем файле messages.po появляется следующее для перевода:
#: templates/base.html:162
#, python-format
msgid "%(MY_EMPTY_TEXT)s"
msgstr ""
В моем pelicanconf.py у меня есть следующие строки:
PLUGIN_PATHS = ['/xxx/pelican/pelican-plugins']
PLUGINS = ['i18n_subsites']
JINJA_ENVIRONMENT = {'extensions' : ['jinja2.ext.i18n']}
MY_EMPTY_TEXT = 'This page be empty'
MY_EMPTY_TEXT_FR = 'Vide'
Что бы я хотел бы сделать, это сделать msgstr как следующее:
msgstr "%(MY_EMPTY_TEXT_FR)s"
но когда я пытаюсь это пиабабель жалуется:
pybabel compile --directory translations/ --domain messages
error: translations/fr/LC_MESSAGES/messages.po:23: unknown named placeholder
u'MY_EMPTY_TEXT_FR'
compiling catalog translations/fr/LC_MESSAGES/messages.po to
translations/fr/LC_MESSAGES/messages.mo
1 errors encountered.
Я пытаюсь использовать только саму строку:
msgstr "Vide"
А потом, когда Я компилирую все работает отлично. Есть ли способ получить это, чтобы быть переменной? Или это застрявшая строка извлечения?
Причина, по которой я бы предпочел иметь переменную, заключается в том, что тогда конечному пользователю нужно просто отредактировать один файл conf со всеми переводами (существует несколько языков) вместо того, чтобы иметь до go для отдельных файлов и др. c. (если вам нужно больше узнать о каком-либо конкретном документе, дайте мне знать. Трудно создать минимальный рабочий пример, поскольку файлов так много .-. Но, надеюсь, этого достаточно.)