Pull to refresh

Comments 16

Огромное спасибо!
Как раз стоит такая проблема, так что я даже не знаю, сколько времени бы у меня ушло, чтобы дойти до такого решения самостоятельно.
Рад что статья оказалась полезной
Проделана мегаработа, за что низкий поклон и большое спасибо! А какую версию джанги используете: 1.2 или 1.3?
Спасибо. Использую версию 1.3 релизную.
Добавил информацию о версии в пост.
Форма подачи «а-ля хауту» — это плохо. очень плохо.
За информацию, что есть такая штука как pymorphy — спасибо.
И еще, может стоит упомянуть, что кодировка должна быть utf-8?
Спасибо за замечание. Насчет кодировки добавил пометку. По данному вопросу теории немного, поэтому я подумал, что данная форма изложения может быть уместна в целях сокращения количества текста. Учту на будущее.
Надо подумать как это красивее сделать. Пока могу предложить скопировать код класса I18nLabel и функции message_wrapper в Ваш admin.py и тег plural_from_object в templatetags. А шаблоны уже готовые я приложил в конец поста.
Код можно запаковать в какой-нибудь пакет (django-russian-admin, например). Шаблоны положить в templates и потом в README написать «добавьте russian_admin в INSTALLED_APPS после admin и admin_tools».

Только admin.site.register и admin.site.app_index патчить нехорошо как-то, лучше сделать наследника AdminSite, наверное.
По договоренности с Николаем начал потихоньку пилить версию для ленивых:
bitbucket.org/kmike/django-russian-admin

Пока она, правда, для не очень ленивых получается (т.к. пошел путем своего AdminSite), и там еще почти ничего не работает, но кое-что уже есть (см. тестовый проект). План такой: сначала сделать версию для не очень ленивых, а потом, быть может, добавить манкипатчилку для совсем ленивых.

Спасибо, добавил информацию в пост
Мегаспасибо Вам! Столько нервных клеток сберегли!
Всё правильно сделал (с) :D

Каждый раз раздражает это отсутствие склонений/падежей, но попривык уже, а тут по большому счету даже манкипатчинга удалось избежать.

Спасибо.
жесть)

Небольшое замечание: пользуйтесь документацией по pymorphy с rtfd ( pymorphy.rtfd.org/), там довольно много всего переписано и, в частности, показан способ, как повторно использовать экземпляр морф. анализатора в случае интеграции с джангой. На packages.pypi.ru неудобно тем, что нужно за ней следить постоянно, и что версия там ровно одна, переехать бы на rtfd полностью, но боюсь, что ссылки кому-нибудь сломаю.

Немного по коду:

1. А вот этот код точно нужен?
form = gram_info['info'][:pos] + u',' + u'ед' if 1 == num else u'мн'


Все методы, принимающие грам. форму, должны это внутри делать (т.е. им нужно передавать не полную грам. форму, а минимальную часть, которая нужно поменять или удостовериться, что полученное слово ей соответствует).

2. Вот тут можете пояснить? Если это какая-то штука, которая всегда должна быть такой, может имеет смысл ее прямо в pymorphy включить и в inflect_ru добавить?
if u'КР_ПРИЛ' != info['class']:
    word = morph.pluralize_inflected_ru(word, num).lower()
else:
    word = morph.inflect_ru(word, form, u'КР_ПРИЧАСТИЕ').lower()


3. Там не получится упростить код, воспользовавшись напрямую шаблонными фильтрами? В джанге шаблонные фильтры можно использовать как обычные функции (берут строку, возвращают строку), а фильтры в pymorphy умеют для строк, размеченных [[ ]], части склонять, а части оставлять как есть (+ они сами более-менее сохраняют регистр слов и разбивают текст на слова).
Еще раз спасибо Вам за библиотеку. Я пользовался документацией на packages.python.org/pymorphy/ Спасибо, теперь буду смотреть на rtfd.org.

1. В этой строке я первым делом брал род из названия модели, но число у него постоянно единственное, для этого просто приписал выбор числа по количеству элементов. Это было сделано для работы с краткими прилагательными. К примеру сообщение об удалении картинки выглядело так «Успешно удалены 1 картинка». Первые два слова определялись как «КР_ПРИЛ». Я начал со второго, так как первое всегда будет оставаться в нужной форме. А второе в данном случае будет изменяться с 'жр, ед' на 'жр, мн' и будет удалена и удалены. Если у Вас есть предложение по переделке, я с радостью выслушаю

2. Метод inflect_ru я использовал для работы только над прилагательными. Но заметил одну особенность. Допустим слово «удалена» если убрать приведение в форме «КР_ПРИЧАСТИЕ», то она выводилась с удвоенной «Н» то есть как «удаленна» возможно я что-то не так делал, если да, то был бы рад узнать как надо было.

3. Я пытался сначала реализовать все на шаблонных фильтрах, но в таком случае фильтр бы прищлось применять к уже сформированному сообщению и это давало не совсем корректные результаты.
Sign up to leave a comment.

Articles

Change theme settings