django-transmeta

Скриншот программы:
django-transmeta
Детали программы:
Версия: 0.6.11
Дата загрузки: 20 Feb 15
Разработчик: Yaco Sistemas
Тип распространения: Бесплатная
Популярность: 1

Rating: 3.0/5 (Total Votes: 1)

Django-Transmeta является приложение Django для переводимого контента в модели Django в & NBSP;. Каждый язык хранится и автоматически управляются в другом столбце на уровне базы данных.
Использование Transmeta
Создание переводимые модели
Посмотрите на эту модель:
Класс Книга (models.Model):
& NBSP; название = models.CharField (max_length = 200)
& NBSP; описание = models.TextField ()
& NBSP; тело = models.TextField (по умолчанию = '')
& NBSP; цена = models.FloatField ()
Предположим, вы хотите, чтобы сделать описание и тела переводимые. В результате модель после использования Transmeta является:
от Transmeta Transmeta импорта
Класс Книга (models.Model):
& NBSP; __ metaclass__ = Transmeta
& NBSP; название = models.CharField (max_length = 200)
& NBSP; описание = models.TextField ()
& NBSP; тело = models.TextField (по умолчанию = '')
& NBSP; цена = models.FloatField ()
& NBSP; класс Мета:
& NBSP; перевести = ('описание', 'тело',)
Убедитесь, что вы установили по умолчанию и доступные языки на вашем settings.py в:
Language_code = '' эс
ugettext = лямбда S: S # манекен ugettext функции, как говорят документы Джанго
ЯЗЫКИ = (
& NBSP; ('эс ", ugettext (« испанский »)),
& NBSP; ('ан', ugettext («Английский»)),
)
Это SQL генерируется с помощью команды ./manage.py sqlall:
НАЧАТЬ;
CREATE TABLE "fooapp_book" (
& NBSP; "ID" серийный NOT NULL PRIMARY KEY,
& NBSP; "название" VARCHAR (200) NOT NULL,
& NBSP; "description_en" текст,
& NBSP; "description_es" текст NOT NULL,
& NBSP; "body_es" текст NOT NULL,
& NBSP; "body_en" текст NOT NULL,
& NBSP; "цена" двойной точности NOT NULL
)
;
COMMIT;
Примечания: * Transmeta создает один столбец для каждого языка. Не беспокойтесь о необходимости новых языков в будущем, Transmeta решает эту проблему для вас. * Если поле является пустым = False и не имеет значения по умолчанию, Transmeta будет создать только один NOT NULL поле для языка по умолчанию. Поля для других дополнительных языках, будет обнуляемым. Кроме того, основным языком должны будут в админ приложение, в то время как другие поля будут опционально (с пустым = True). Это было сделано потому, что нормальный подход для перевода контента сначала добавить содержимое в основной язык, а потом у переводчики переводят на другие языки. * Вы можете использовать ./manage.py SyncDB создать схему базы данных.
Играя в оболочке питона
Transmeta создает одно поле для каждого из доступных языков для каждого переводимого поля, заданного в модели. Имена полей с суффиксом языка коротких кодов, например: description_es, description_en, и так далее. Кроме того, он создает поле_формы добытчика для получения значения поля в активной языке.
Давайте играть немного в оболочке Python лучше всего понять, как это работает:
& GT; & GT; & GT; от fooapp.models импортировать книги
& GT; & GT; & GT; б = Book.objects.create (description_es = u'mi Descripcion ", description_en = u'my описание ')
& GT; & GT; & GT; b.description
u'my описание '
& GT; & GT; & GT; от django.utils.translation Активировать импорта
& GT; & GT; & GT; Включить ("ES")
& GT; & GT; & GT; b.description
u'mi Descripcion "
& GT; & GT; & GT; b.description_en
u'my описание '
Добавление новых языков
Если вам нужно добавить новые языки в существующих, вам нужно только изменить свой settings.py и попросить Transmeta синхронизировать БД снова. Например, чтобы добавить французский нашему проекту, необходимо добавить его в ЯЗЫКОВ в settings.py:
ЯЗЫКИ = (
& NBSP; ('эс ", ugettext (« испанский »)),
& NBSP; ('ан', ugettext («Английский»)),
& NBSP; ("FR", ugettext ("французский")),
)
И выполнить специальную команду sync_transmeta_db:
& NBSP; ./ manage.py sync_transmeta_db
Пропавших без вести языков в поле "Описание" от модели "fooapp.book": пт
SQL для синхронизации "fooapp.book" схемы:
& NBSP; ALTER TABLE "fooapp_book" Добавить столбец "description_fr" текст
Вы уверены, что вы хотите, чтобы выполнить предыдущий SQL: (Y / N) [N]: у
Выполнение SQL-... Готово
Пропавших без вести языков в "тело" поля от модели "fooapp.book": пт
SQL для синхронизации "fooapp.book" схемы:
& NBSP; ALTER TABLE "fooapp_book" Добавить столбец "body_fr" текст
Вы уверены, что вы хотите, чтобы выполнить предыдущий SQL: (Y / N) [N]: у
Выполнение SQL-... Готово
И готово!
Добавление новых полей переводимые
Теперь представьте себе, что после нескольких месяцев, используя это веб-приложение (с много книг, созданный), вам нужно сделать книгу цена переводимые (например, потому что книга цена зависит от валюты).
Чтобы добиться этого, сначала добавьте цену транслируемую список полей модели:
Класс Книга (models.Model):
& NBSP; ...
& NBSP; цена = models.FloatField ()
& NBSP; класс Мета:
& NBSP; перевести = ('описание', 'тело', '', цена)
Все, что осталось теперь, вызвав команду sync_transmeta_db обновить DB схемы:
& NBSP; ./ manage.py sync_transmeta_db
Доступные языки:
& NBSP; 1. испанский
& NBSP; 2. английский
Выберите язык, на котором поставить текущие непереведенные данных.
Что язык текущих данных? (1-2): 1
Пропавших без вести языков в "стоимость" от модели "fooapp.book": ES, EN
SQL для синхронизации "fooapp.book" схемы:
& NBSP; ALTER TABLE "fooapp_book" Добавить столбец "price_es" двойной точности
& NBSP; UPDATE "fooapp_book" SET "price_es" = "цена"
& NBSP; ALTER TABLE "fooapp_book" ALTER колонке "price_es" SET NOT NULL
& NBSP; ALTER TABLE "fooapp_book" Добавить столбец "price_en" двойной точности
& NBSP; ALTER TABLE "fooapp_book" DROP COLUMN "цену"
Вы уверены, что вы хотите, чтобы выполнить предыдущий SQL: (Y / N) [N]: у
Выполнение SQL-... Готово
Что, черт возьми, эта команда делает?
Команда sync_transmeta_db не только создает новые столбцы базы данных для нового транслируемую области ... это скопировать данные из поля Старая цена на один из языков, и поэтому команда попросит вас языке назначения поля для фактических данных.
Интеграция Админ
Transmeta прозрачно отображает все переводимые поля в интерфейсе администратора. Это легко, потому что модели имеют на самом деле многих областях (по одному для каждого языка).
Изменение поля формы в админ довольно распространенная задача, и Transmeta включает в себя функцию полезности canonical_fieldname применять эти изменения для всех полей язык сразу. Это лучше всего объяснить на примере:
от Transmeta canonical_fieldname импорта
класс BookAdmin (admin.ModelAdmin):
& NBSP; четкости formfield_for_dbfield (самостоятельно, db_field, ** kwargs):
& NBSP; поле = супер (BookAdmin, само) .formfield_for_dbfield (db_field, ** kwargs)
& NBSP; db_fieldname = canonical_fieldname (db_field)
& NBSP; если db_fieldname == 'описание':
& NBSP; # это относится ко всем * поля description_
& NBSP; field.widget = MyCustomWidget ()
& NBSP; Элиф field.name == 'body_es ":
& NBSP; # это относится только к body_es области
& NBSP; field.widget = MyCustomWidget ()
& NBSP; возвращение поле

Особенности

  • Автоматическое создание схемы с переводимых полей.
  • переводимые поля интегрированы в интерфейс администратора в Django.
  • Команда синхронизации схемы базы данных, чтобы добавить новые переводимые поля и новые языки.

Что нового В этом выпуске:

  • Добавлена ​​функция get_mandatory_fieldname.

Что нового в версии 0.6.9:

  • Поддержка в методе get_field_language для имен полей с подчеркивания

Что нового в версии 0.6.8:

  • Исправлена ​​ошибка мало в командной sync_transmeta_db (UnboundLocalError: локальная переменная 'F' обращаться до назначения)

Что нового в версии 0.6.7:

  • Изменение представления (verbose_name) из Transmeta этикеток

Что нового в версии 0.6.6:

  • Улучшения и удобство в командной sync_transmeta_db
  • исправить некоторые ошибки
  • Документация

Что нового в версии 0.6.5:

  • Улучшения и удобство в командной sync_transmeta_db
  • Работает с последней Django (команда sync_transmeta_db)
  • Работает с MySQL (команда sync_transmeta_db)

Что нового в версии 0.6.4:

  • ошибки Исправления с наследованием в моделях.

Что нового в версии 0.6.3:

  • Разрешить использовать настройки TRANSMETA_LANGUAGES.
  • Добавлена ​​два варианта sync_transmeta_db: -y (да предположить на всех) и -d (код языка по умолчанию)

Что нового в версии 0.6.2:

  • Работает при локаль по умолчанию есть варианты написания как эс-ES или EN-US.

Требования

  • Джанго
  • Python

Другие программы разработчика Yaco Sistemas

Cmsutils
Cmsutils

14 Apr 15

transhette
transhette

11 May 15

django-form-admin
django-form-admin

14 Apr 15

Комментарии к django-transmeta

Комментарии не найдены
добавить комментарий
Включите картинки!