-
Здравствуйте.
На сайт нужно добавить возможность "прозрачного" перевода динамических данный, наподобии того, как это сделано в django-multilingual.
Возможно ли как-нибудь передать значение request.LANGUAGE в менеджер модели, чтобы при выборке он возвращал перевод на активный язык, либо ничего, если перевод отсутствует?
Код моделей примерно следующий:
Хочется чтобы приclass Category(models.Model):
slug = models.SlugField(_(u"slug"), unique=True)
...
class CategoryTranslation(models.Model):
translation_of = models.ForeignKey(Category, related_name='translations')
name = models.CharField(_(u"name"), max_length=200, unique=True)
...
lang_code = models.CharField(_(u"language"), choices=settings.LANGUAGES,
max_length=2)
на экран выводилось имя категории на языке из request.LANGUAGE, либо ошибка 404. Кошерно ли это, или не в ту сторону смотрю?def category_detail(request, slug):
category = get_object_or_404(Category, slug=slug)
print category.name -
У меня все пример так же, но я выставляю язык явно во вьюхе:
obj = get_object_or_404(Program, slug=slug) if language: try: obj.translate(language) except ProgramTranslation.DoesNotExist: raise Http404obj.translateпросто назначает в атрибут нужную модель с переводом:def translate(self, language): self.translation = self.translation_set.get(language=language) -
А, и наверное полезно еще будет привести метод объекта, который подставляет нужные строчки из translation'а:
def __getattribute__(self, name): try: return models.Model.__getattribute__(self, name) except AttributeError: if name in [f.name for f in ProgramTranslation._meta.fields]: if self.translation: return getattr(self.translation, name) else: return u'<no translated value>' else: raise -
На сайт нужно добавить возможность "прозрачного" перевода динамических данный, наподобии того, как это сделано в django-multilingual.
А почему бы его не использовать просто?
-
А почему бы его не использовать просто?
Он на текущем транке нормально работает? У меня с пол-пинка не завелось. Да как-то тяжко верить автоматике, зависящей от потрохов постоянно обновляющегося фреймворка.
-
Правильно, лучше изобрести свою «автоматику» :-)
-
А почему бы его не использовать просто?Насколько я помню, в django-multilingual нужно изначально задавать нужные языки для переводов, а если позже понадобятся новые?
Я решил задачу самостоятельно, более гибко и динамично. -
Насколько я помню, в django-multilingual нужно изначально задавать нужные языки для переводов, а если позже понадобятся новые?
Просто добавите новую строчку в settings.py. Там нет жесткой привязки к списку языков.
-
Я решил задачу самостоятельно, более гибко и динамично.Поделитесь?
-
maybe?
нет. transdb ужасен
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.





