Pybabel с переменными переводами (используя пеликан) - PullRequest
0 голосов
/ 21 февраля 2020

Я использую 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. (если вам нужно больше узнать о каком-либо конкретном документе, дайте мне знать. Трудно создать минимальный рабочий пример, поскольку файлов так много .-. Но, надеюсь, этого достаточно.)

...