В приложении Flask
мы недавно обновили Werkzeug
до 1.0.1 (чтобы мы могли настроить тот же сайт для файлов cookie), что привело к появлению нескольких зависимостей, среди которых Flask-BabelEx==0.9.4
.
After В этом обновлении обработка пропущенных% (знаков процента) изменилась очень неприятным образом. Если раньше gettext('foo %%')
возвращало *"foo %"*
, теперь оно возвращает *"foo %%"*
, другими словами, экранирование знака%, похоже, не обрабатывается. Я подумал, хорошо, небольшая несовместимость снизу вверх, нам просто нужно заменить все %%
на %
в строках babel (на справочном языке, а также во всех переводах, так что это уже большое дело).
Но это еще не конец истории, потому что для всех строк babel, используемых в шаблонах Jinja2 , таких как {{ _("This is a percent sign: %") }}
, экранирование знаков %
по-прежнему обрабатывается, так что это все еще нужно {{ _("This is a percent sign: %%") }}
. Итак, должны ли мы обрабатывать как %
-экранированные, так и неэкранированные строки babel в зависимости от того, где они используются? Есть ли где-нибудь настройка, которая решила бы эту проблему с побегом.