Из всех "многоязычных" решений на Django самым внятным мне показался django-multilingual-ng, от авторов django CMS. Сама django CMS по смыслу не очень подошла для текущего проекта, поэтому было принято решение сделать своё решение, позаимствовав часть идей из django CMS.
То, что django-multilingual-ng написано под django CMS, к сожалению, дало неприятный косяк в том, что оно "из коробки" не другит с FeinCMS. Причём в тикете автор говорит - используйте лучше django CMS, что довольно странно, если мне нужен всего-лишь UI для редактирования mptt-деревьев.
Понадобилось тут ещё добавить некоторое удобство - чтоб в админке словарики (многоязычные) были по алфавиту отсортированы (в соответствии с текущим языком, конечно).
Поле ordering для ModelAdmin, естественно, не подходит, ибо переводы лежат в отдельной таблице и поля разные для разных языков получаются.
Поковырявшись в джанге получился вот примерно такой велосипедик:
То, что django-multilingual-ng написано под django CMS, к сожалению, дало неприятный косяк в том, что оно "из коробки" не другит с FeinCMS. Причём в тикете автор говорит - используйте лучше django CMS, что довольно странно, если мне нужен всего-лишь UI для редактирования mptt-деревьев.
Понадобилось тут ещё добавить некоторое удобство - чтоб в админке словарики (многоязычные) были по алфавиту отсортированы (в соответствии с текущим языком, конечно).
Поле ordering для ModelAdmin, естественно, не подходит, ибо переводы лежат в отдельной таблице и поля разные для разных языков получаются.
Поковырявшись в джанге получился вот примерно такой велосипедик:
class NameMultilingualAdmin(MultilingualModelAdmin): list_display = ('name',) @gll def get_changelist(self, request): field = 'name_%s' % GLL.language_code from django.contrib.admin.views.main import ChangeList class NameOrderedChangelist(ChangeList): def get_ordering(self): return (field, 'asc') return NameOrderedChangelist