Лучшие практики для подстановки строк с использованием gettext с использованием Python - PullRequest
2 голосов
/ 25 мая 2010

Нужны советы по лучшей методике замены строк при использовании gettext (). Или все техники применяются одинаково?

Я могу придумать как минимум 3 строковых техники:

1) Классическое форматирование на основе "%":

"Меня зовут% (name) s"% localals ()

2) .format () форматирование:

"Меня зовут {имя}". Формат (местные ())

3) string.Template.safe_substitute ()

строка импорта template = string.Template («Меня зовут $ {name}») template.safe_substitute (locals ())

Преимущество метода string.Template заключается в том, что переведенная строка с неверно записанной ссылкой на переменную может по-прежнему выдавать полезное строковое значение, в то время как другие методы безоговорочно вызывают исключение. Обратная сторона строки. Техника шаблонов заключается в невозможности настроить форматирование переменной (отступы, выравнивание, ширина и т. Д.).

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

На самом деле я бы предпочел бы получить исключение во время моих тестов, чтобы исправить ошибку как можно скорее - "ошибки не должны проходить бесшумно". Поэтому я считаю, что подход (2) является лучшим в современном Python (который поддерживает удобочитаемый и гибкий format), а подход (1), вероятно, неизбежен, если вы застряли с поддержкой старых версий Python (где * «1004 *» был «единственным способом гибкого форматирования - поиск или кодирование, основной альтернативой которого был бы format».

1 голос
/ 25 мая 2010

Не используйте неправильно записанные имена переменных - для этого и нужно тестирование.

На первый взгляд, что-то выглядит лучше, чем выбрасывать исключение, но рано или поздно один из этих неправильных переводов неизбежно обидит какого-то пользователя.

.format() - это путь в эти дни.

Пересмотреть передачу locals() прямо в перевод. Это избавит вас от беспокойства о том, что произойдет, если кто-то придумает способ сделать что-то подлое с self в одном из переводов.

...