```
в позиции 93029080 (10%) 905.7Кб/с овп:17m [Отправка данных/TLS]
```
"Region layers" и "Point layers" соответственно.
В моём представлении это должны быть: "Слои регионов (областей)" и "Слои точек (городов)".
Как я себе это представляю: есть некий многоуровневый словарь, где поязыково хранятся фразы, которые должны быть на странице.
Как это принято делать? Так, чтобы было более-менее гибко, ненапряжно в плане ресурсов и не захламляло код.
Буду ОЧЕНЬ благодарен за любую помощь!
В settings.yml фронтенда:
all:
.settings:
charset: utf-8
i18n: true
default_culture: ru_RU
standard_helpers: [Partial, Cache, I18N]
Что не так?
На входе — слово, полученное от сторонних сервисов или введенное пользователем. Например, "Омск" или "Omsk" (перевода я пока не прошу).
На выходе — это же слово, но в нужной форме. Например, "в Омске" или "in Omsk".
Причем программист (пользователь либы) не должен заморачиваться грамматическими категориями, что тут нужен предложный падеж с предлогом "в". Ибо в разных языках падежи и предлоги разные. Программист должен указывать желаемый результат в виде: "форма данного слова для обозначения того, что действие происходит в данном месте".
Без сомнения, как только я разделаюсь с 2мя последними проектами, я не мало кода добавлю в tw2, repoze.what, а может даже немного и в mongokit, pylons. Но, конечно, ярче всех будет один проект, которым я занимаюсь с одним знаменитым в узких кругах человеком. Если повезёт, то мы сделаем скачок выше RubyOnRails.
Хочется отметить, что попадая в такие передряги с софтом и библиотеками на пайтоне, ты осознаешь что это гораздо приятнее чем то, с чем приходится сталкиваться на cpp или каком-либо ином языке. А сталкиваться на других языках приходится чаще.
Есть такой офигенный фреймворк для вормоклепания — ToscaWidgets. Его давно многие питонисты юзают. Всё круто, всё супер. Однако, сейчас уже вышел TW2 и нужно переходить на него. Чем я и занимался.
Сколько фишек! Сколько ворможностей! Как всё стало проще и красивее! Однако документация лучше не стала. Старались лучше, да, но количество документации TW1 перекрывает качество TW2.
В документации к TW2 идёт 2 примера: на собственном веб-сервере для тестинга TW2(просто класс, да пара хуков на пастере) и на TG2.
На самом деле, ни один из этих примеров не раскрывает секретов разработки с использованием TW2. По сути, эти примеры являются вызовом метода run_hello_world_program. toscawidgets.org
Да-да, всё в этом: tw2.forms.FormPage
Дело в том, что Page(FormPage — потомок) генерирует свою страницу, свои хуки, само всем управляет. Оно получает запрос от wsgi, а затем возвращает ответ webob. Т.е. может работать одно, без "людей". Но зачем оно мне? Как вставить свой хтмл-код? Как юзать свои темплейты? В общем, целый набор классов для песочниц, а вся документация — вокруг них. Это что, намёк на то, что TW2 только для песочниц? Бред. Вообще, из этого можно было бы сделать очень удобную штуку, но... Потом займусь.
Чтобы заставить это всё работать без заветного класса-страницы, пришлось опуститься ниже, погуглить, да и много вообще потратить времени. Вообще, оно очень не очевидно, что всё дело, в т.ч. валидация и обработка запросов, производится в классе страницы.
В любом случае, вот такой кусок кода есть в TW2, в классе страницы: pastie.org
После этого всё становится очевидным. Очень очевидным. И, конечно, можно без труда всё сделать.
Но подождите, это не конец поста! i18n ещё не полностью душу выбил из меня, ему захотелось ещё! Суть в чём: создавая форму на TW2, ты создаёшь класс. Класс создаётся во время старта приложения. Уже начинаете понимать к чему оно?
user_type = twf.RadioButtonList(options=[_('Seller'), _('Customer')], label=None, css_class='widgetList')
К.О.: Seller и Customer всегда будут таковыми, они не будут меняться с выбором языка пользователя. Они будут всегда на одном языке. Почему? Потому что поле класса формы создаётся во время запуска приложения, когда выбран один язык.
Решение есть одно — генерация формы по запросу, т.е. обернуть в функцию, в которой описывается форма. Соответственно, форма будет каждый раз генериться заново при вызове функции, а затем возвращать её. В общем, вот такие вот пироги:
pastie.org
А вот обработка: pastie.org
Интересно, существуют ли какие-либо веб-фреймворки, предполагающие еще и этап обработки параметров, присланных пользователем? Мне такие неизвестны :(
Весь день проработал над не анонсированным проектом. Я уже забыл как программировать целыми днями. Только выполнил одну задачу, как вылезает другая, которая тянет за собой третью. Только разобрался и уже спать пора! Научился пользоваться реализацией I18n под Ruby (и его дополнением Russian). До этого сам костыли городил, а сейчас интернационализация выпрыгивает из коробки.
Очнулся от программирования в 3 часа ночи. Меня хватило только на то, чтобы досмотреть серию s01e06 сериала "Звездные врата: Вселенная" (Stargates: Universe). Работу искать не стал, так как надоело. За последнее время никто так и не пригласил на собеседование… буду тратить время не на поиски работы, а на программирование =)