django-transmeta

Software captura de pantalla:
django-transmeta
Detalles de software:
Versión: 0.6.11
Fecha de carga: 20 Feb 15
Promotor: Yaco Sistemas
Licencia: Libre
Popularidad: 1

Rating: 3.0/5 (Total Votes: 1)

django-Transmeta es una aplicación Django para el contenido traducible en modelos de Django. & Nbsp; Cada idioma se almacena y gestiona de forma automática en una columna diferente a nivel de base de datos.
El uso de Transmeta
La creación de modelos traducibles
Mira este modelo:
clase Book (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; descripción = models.TextField ()
& Nbsp; cuerpo = models.TextField (default = '')
& Nbsp; precio = models.FloatField ()
Supongamos que desea hacer la descripción y traducible cuerpo. El modelo resultante después de usar Transmeta es:
de Transmeta Transmeta importación
clase Book (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; descripción = models.TextField ()
& Nbsp; cuerpo = models.TextField (default = '')
& Nbsp; precio = models.FloatField ()
& Nbsp; la clase Meta:
& Nbsp; traducir = ('description', 'cuerpo',)
Asegúrese de que ha configurado los idiomas predeterminados y disponibles en su settings.py:
= LANGUAGE_CODE 'es'
ugettext = lambda s: s # maniquí ugettext función, como dicen los documentos de Django
IDIOMAS = (
& Nbsp; ('es', ugettext ('Español')),
& Nbsp; ('en', ugettext ('Inglés')),
)
Este es el SQL generado con el comando sqlall ./manage.py:
COMENZAR;
CREATE TABLE "fooapp_book" (
& Nbsp; "id" de serie clave principal no NULL,
& Nbsp; varchar "título" (200) NOT NULL,
& Nbsp; texto "description_en",
& Nbsp; texto "description_es" NOT NULL,
& Nbsp; texto "body_es" NOT NULL,
& Nbsp; texto "body_en" NOT NULL,
& Nbsp; "precio" de doble precisión NOT NULL
)
;
COMMIT;
Notas: * transmeta crea una columna para cada idioma. No se preocupe acerca de la necesidad de nuevas lenguas en el futuro, Transmeta resuelve este problema para usted. * Si un campo es nulo = False y no tiene un valor por defecto, Transmeta creará sólo un campo NOT NULL, por el idioma por defecto. Campos para otros idiomas secundarios serán anulable. Además, se requerirá que el idioma principal en la aplicación de administración, mientras que los otros campos serán opcionales (con blanco = True). Esto se hizo así porque el método normal para la traducción de contenidos se agregue primero contenido en el idioma principal y más tarde tener traductores traducen a otros idiomas. * Puede utilizar syncdb ./manage.py para crear el esquema de base de datos.
Jugando en la terminal de Python
Transmeta crea un campo para todos los idiomas disponibles para cada campo traducible definido en un modelo. Los nombres de campo se sufijo códigos de idioma cortos, por ejemplo: description_es, description_en, y así sucesivamente. Además se crea un getter field_name para recuperar el valor del campo en el lenguaje activo.
Vamos a jugar un poco en una cáscara de python para entender mejor cómo funciona esto:
& Gt; & gt; & gt; desde fooapp.models importar libro
& Gt; & gt; & gt; b = Book.objects.create (description_es = u'mi descripcion ', description_en = u'my descripción')
& Gt; & gt; & gt; b.description
Descripción u'my '
& Gt; & gt; & gt; desde django.utils.translation activar importación
& Gt; & gt; & gt; activar ('es')
& Gt; & gt; & gt; b.description
u'mi descripcion '
& Gt; & gt; & gt; b.description_en
Descripción u'my '
La adición de nuevos idiomas
Si es necesario agregar nuevos idiomas a los ya existentes sólo se necesita para cambiar su settings.py y pedir Transmeta para sincronizar la base de datos de nuevo. Por ejemplo, para añadir francesa a nuestro proyecto, tendrá que añadirlo a IDIOMAS en settings.py:
IDIOMAS = (
& Nbsp; ('es', ugettext ('Español')),
& Nbsp; ('en', ugettext ('Inglés')),
& Nbsp; ('fr', ugettext ('French')),
)
Y ejecutar un comando especial sync_transmeta_db:
& Nbsp; ./ manage.py sync_transmeta_db
Falta idiomas en el campo "Descripción" de modelo "fooapp.book": fr
SQL para sincronizar esquema "fooapp.book":
& Nbsp; ALTER TABLE "fooapp_book" AÑADIR COLUMNA texto "description_fr"
¿Seguro que desea ejecutar el SQL anterior: (s / n) [n]: y
Ejecutando SQL ... Hecho
Falta idiomas en el campo "cuerpo" de modelo "fooapp.book": fr
SQL para sincronizar esquema "fooapp.book":
& Nbsp; ALTER TABLE "fooapp_book" AÑADIR COLUMNA texto "body_fr"
¿Seguro que desea ejecutar el SQL anterior: (s / n) [n]: y
Ejecutando SQL ... Hecho
Y listo!
La adición de nuevos campos traducibles
Ahora imagine que, después de varios meses usando esta aplicación web (con muchos libros creados), usted necesita para hacer traducible precio de los libros (por ejemplo, porque el precio del libro depende de la moneda).
Para lograr esto, primero agregue precio de lista Campos traducible del modelo:
clase Book (models.Model):
& Nbsp; ...
& Nbsp; precio = models.FloatField ()
& Nbsp; la clase Meta:
& Nbsp; traducir = ("descripción", "cuerpo", "precio",)
Todo lo que queda ahora está llamando el comando sync_transmeta_db para actualizar el esquema DB:
& Nbsp; ./ manage.py sync_transmeta_db
Idiomas disponibles:
& Nbsp; 1. Español
& Nbsp; 2. Inglés
Elija un idioma en el que poner los datos sin traducir actuales.
¿Cuál es el idioma de los datos actuales? (1-2): 1
Falta idiomas en el campo "precio" de modelo "fooapp.book": es, en
SQL para sincronizar esquema "fooapp.book":
& Nbsp; ALTER TABLE "fooapp_book" Añadir columna "price_es" doble precisión
& Nbsp; UPDATE "fooapp_book" "price_es" SET = "precio"
& Nbsp; ALTER TABLE "fooapp_book" ALTER COLUMN "price_es" SET NOT NULL
& Nbsp; ALTER TABLE "fooapp_book" Añadir columna "price_en" doble precisión
& Nbsp; ALTER TABLE "fooapp_book" DROP COLUMN "precio"
¿Seguro que desea ejecutar el SQL anterior: (s / n) [n]: y
Ejecutando SQL ... Hecho
¿Qué demonios hace este comando?
comando sync_transmeta_db no sólo crea nuevas columnas de base de datos para el nuevo campo traducible ... es copiar los datos de campo de precio de edad en una de las lenguas, y es por eso comando que pedir campo del idioma de destino para los datos reales.
Integración de administración
Transmeta muestra de forma transparente todos los campos traducibles en la interfaz de administración. Esto es fácil porque los modelos tienen, de hecho, muchos campos (uno por cada idioma).
Cambio de campos de formulario en la administración es una tarea común, y Transmeta incluye la función de utilidad canonical_fieldname para aplicar estos cambios para todos los campos de idioma a la vez. Se explica mejor con un ejemplo:
de Transmeta canonical_fieldname importación
clase BookAdmin (admin.ModelAdmin):
& Nbsp; def formfield_for_dbfield (self, db_field, ** kwargs):
& Nbsp; campo = super (BookAdmin, auto) .formfield_for_dbfield (db_field, ** kwargs)
& Nbsp; db_fieldname = canonical_fieldname (db_field)
& Nbsp; si db_fieldname == 'descripción':
& Nbsp; # esto se aplica a todos los description_ * Campos
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; elif field.name == 'body_es':
& Nbsp; # esto se aplica sólo a campo body_es
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; campo retorno

Características :

  • creación del esquema automático con campos traducibles.
  • campos traducibles integrados en la interfaz de administración.
  • Comando para sincronizar esquema de base de añadir nuevos campos traducibles y nuevos lenguajes.

¿Qué hay de nuevo en esta versión:

  • función get_mandatory_fieldname Añadido.

¿Qué hay de nuevo en la versión 0.6.9:

  • Soporte en método get_field_language para nombres de campo con guiones

¿Qué hay de nuevo en la versión 0.6.8:

  • Fijar un pequeño error en el sync_transmeta_db comando (UnboundLocalError: variable local 'f' de referencia antes de la asignación)

¿Qué hay de nuevo en la versión 0.6.7:

  • Cambiar la representación (verbose_name) de las etiquetas Transmeta

¿Qué hay de nuevo en la versión 0.6.6:

  • Mejoras y usabilidad en la sync_transmeta_db comando
  • corregir algunos errores
  • Documentación

¿Qué hay de nuevo en la versión 0.6.5:

  • Mejoras y usabilidad en la sync_transmeta_db comando
  • Funciona con la última Django (el sync_transmeta_db comando)
  • Funciona con mysql (la sync_transmeta_db comando)

¿Qué hay de nuevo en la versión 0.6.4:

  • error Arreglos con herencia en los modelos.

¿Qué hay de nuevo en la versión 0.6.3:

  • Permite utilizar una configuración TRANSMETA_LANGUAGES.
  • Añadido dos opciones para sync_transmeta_db: -y (asumir sí sobre todo) y -d (código de idioma predeterminado)

¿Qué hay de nuevo en la versión 0.6.2:

  • Funciona cuando regional predeterminada tiene variantes ortográficas como es-ES o en-US.

Requisitos :

  • Django
  • Python

Otro software de desarrollador Yaco Sistemas

trac2rst
trac2rst

15 Apr 15

django-form-admin
django-form-admin

14 Apr 15

Cmsutils
Cmsutils

14 Apr 15

Comentarios a la django-transmeta

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!