Flask Babelex 0.9.4 и% убегающих - PullRequest
6 голосов
/ 16 июня 2020

В приложении 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 в зависимости от того, где они используются? Есть ли где-нибудь настройка, которая решила бы эту проблему с побегом.

...