Pull to refresh

Comments 8

Почему-то думал что этого достаточно, без велосипедов…
Извиняюсь, не понял изначально про, что статья…
Поскольку у вас уже есть Jinja2 в зависимостях, то можно воспользоваться его расширением gettext.
Тут можно посмотреть на него.
Я его и с Django пользую так:
... JINJA_CONFIG = { 'extensions': [ 'jinja2.ext.i18n', .... ], } ...
jinja2 все равно не может знать о местонахождении locale, поэтому ей нужно указывать откуда брать переводы.
А строчки:
jinja = Environment( extensions=['jinja2.ext.i18n']) jinja.install_gettext_translations(translations)
и
kwarg['_'] = get_trans(module)
Выполняют примерно одинаковую задачу. Но с небольшой разницей, get_trans() «знает» что такое модули, и каждому модулю предоставляет именно его файл переводов, исключая конфликты и пр.
Инициализация ненужных переменных, названия переменных в стиле n, r, l, s, вложенные на 5 уровней циклы. Зачем вы делаете это с питоном?
Я человек от питона пока что достаточно далёкий. Скажите, в чём зло пяти уровней?
Что вместо вложенности циклов принято в питоне? Как можно по другому написать?
Ну и локальные переменные, используемые один раз в соседней строке — в чём зло кратких названий? Как принято в питоне?
Заранее спасибо.
Если честно то я мало иследовал плюсы babel относительно gettext, при том что gettext более распространен. Насколько я понимаю фрагмент:
import gettext; gettext.translation(domain, path, ['ru'], codeset='UTF-8')
Для babel примерный аналог:
from babel.support import Translations Translations.load(dirname=resource_filename(__name__, 'locale'), locales=['ru'], domain='messages')
Разница не очень большая.
Sign up to leave a comment.

Articles