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

Я бы хранил все в файлах (*.mo), но как тогда это реализовать.
Чтобы, когда в админке добавил новую новость (заглавие, тело …), чтобы при сборке этот текст попадал в файл перевода?.. что-то не могу понять.
vaxXxa
И вопрос в догонку: почему ugettext_lazy() не работает с кириллицей?.. ugettext_lazy('Украина') - дает ошибку..
Ferroman
google django_multilingual
i18n - http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n

И почитай про юникод в питоне.
ugettext_lazy(u'Украина')
vaxXxa
Доки читал. Просто я спросил, как именно лучше сделать?
Почему не google “ i18n в модели” и все?!

А про юникод я забыл… это в тройке все строки уже = юникод.
Ferroman
Какого ответа ты ждёшь? В гугле полно информации, да и на форуме тоже.

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

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

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

Для записей, которые будут добавятся пользователем и сохранятся в базе я использую django-multilingual http://code.google.com/p/django-multilingual/
vaxXxa
Спасибо, понял. Буду читать.
LP fan
а можно на кусочек модели посмотреть ?
vaxXxa
# -*- 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB