Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2009 15:18:46

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

Задача: Хочу сделать модель новостей. (атрибуты модели: title, body, timestamp, …). Но, хочу еще сделать с i18n.
Как лучше решать эту задачу? Где лучше хранить перевод: в БД или в файлах перевода? Кто сталкивался или есть какие-то идеи - подскажите. Спасибо.

Я бы хранил все в файлах (*.mo), но как тогда это реализовать.
Чтобы, когда в админке добавил новую новость (заглавие, тело …), чтобы при сборке этот текст попадал в файл перевода?.. что-то не могу понять.



Отредактировано (Окт. 8, 2009 15:22:34)

Офлайн

#2 Окт. 8, 2009 15:39:02

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

И вопрос в догонку: почему ugettext_lazy() не работает с кириллицей?.. ugettext_lazy('Украина') - дает ошибку..



Офлайн

#3 Окт. 8, 2009 15:48:18

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

i18n в модели

google django_multilingual
i18n - http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n

И почитай про юникод в питоне.
ugettext_lazy(u'Украина')

Отредактировано (Окт. 8, 2009 15:50:49)

Офлайн

#4 Окт. 8, 2009 16:36:06

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

Доки читал. Просто я спросил, как именно лучше сделать?
Почему не google “ i18n в модели” и все?!

А про юникод я забыл… это в тройке все строки уже = юникод.



Офлайн

#5 Окт. 8, 2009 16:57:32

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

i18n в модели

Какого ответа ты ждёшь? В гугле полно информации, да и на форуме тоже.

Для статичных надписей - использовать стандартный функционал джанги

Тут подробно на аглийском:
http://www.djangobook.com/en/1.0/chapter18/

Тут - на русском:
http://www.djbook.ru/ch18.html

Для записей, которые будут добавятся пользователем и сохранятся в базе я использую django-multilingual http://code.google.com/p/django-multilingual/

Офлайн

#6 Окт. 8, 2009 16:58:57

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

Спасибо, понял. Буду читать.



Офлайн

#7 Окт. 21, 2009 21:02:15

LP fan
От:
Зарегистрирован: 2009-10-07
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

а можно на кусочек модели посмотреть ?



Офлайн

#8 Окт. 21, 2009 23:46:51

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

i18n в модели

# -*- coding: utf-8 -*-

import multilingual
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from django.contrib.sites.models import Site

class NewsPost(models.Model):
class Translation(multilingual.Translation):
title = models.CharField(_(u'Заглавие'), max_length=150)
body = models.TextField(_(u'Текст'))
timestamp = models.DateTimeField(_(u'Дата'))
class Meta:
verbose_name = _(u'новость')
verbose_name_plural = _(u'новости')
ordering = ('-timestamp',)
def get_absolute_url(self):
return '/info/news/#news'+str(self.id)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version