2010-01-07 11 views
19

Estoy tratando de encontrar la mejor manera de traducir los valores reales de la base de datos (cadenas textuales, formatos de fecha o algo complicado) al internacionalizar mi aplicación Django. Las formas más lógicas que pudiera surgir con debían ya sea:La mejor/manera recomendada de traducir los valores de la base de datos Django

  • mantienen una base de datos columna para cada idioma (por ejemplo description_en, description_de, description_fr, ...) o
  • tienen una base de datos diferente para cada idioma (por ejemplo, schema_en, schema_fr, schema_de, ...).

¿Son estas las mejores opciones, o hay algo más que me falta? Gracias.

+0

también, esta es una aplicación realmente pequeña y simple con quizás 5 o menos tablas pequeñas. – sa125

+0

¿Se supone que cada instalación tiene 1 idioma único, a diferencia de tener una configuración de idioma por usuario? – extraneon

+0

la aplicación admite la selección de idioma por usuario, por lo que debe admitir todas las traducciones implementadas en una sola instancia – sa125

Respuesta

16

que estaba leyendo sobre mis extensiones de Django, y ha encontrado el plugin django-modeltranslation. Parece hacer exactamente lo que quieres que haga. Si no, deje un comentario y borraré esta respuesta :)

+0

se ve bien en primer vistazo, voy a tener que jugar un poco - ¡gracias! – sa125

+4

Llego tarde en este caso para sugerir una nueva solución para las traducciones de db, yawd-translations - github.com/yawd/yawd-translations. Permite administrar idiomas a través de la interfaz de administración (en tiempo de ejecución) e implementa una administración en línea para administrar fácilmente las traducciones. Como estoy desarrollando para yawd, uso un comentario en lugar de una nueva respuesta para no ser acusado de autopromoción :) – ppetrid

+1

[Movido en github] (https://github.com/deschler/django-modeltranslation) –

2

Puede echar un vistazo a la siguiente thread que parece ser la misma pregunta que está haciendo aquí.

no me importaría escuchar la solución que finalmente va a utilizar como en algún momento en el futuro que podría tener la misma pregunta :)

3

También encontré esto small project cuyo propósito es sincronizar cadenas localizadas en archivos de mensajes estándar para campos de modelos registrados.

Ejemplo:

import vinaigrette 
vinaigrette.register(YourModel, ['name', 'description']) 

el comando estándar

$ manage.py makemessages 

mantendría mensajes para cada valores distintos que se encuentran en los campos registrados.

No he tenido la ocasión de probarlo todavía.
Pero me parece que esta es la forma más sencilla de traducir datos de db.

+1

Esto significa cada vez que agrega un nuevo registro en la base de datos, es posible que deba volver a ejecutar makemessages y verificar los archivos po si hay una nueva entrada ... solo una advertencia. Pero de todos modos, esto es lo que estaba buscando, es más ligero que django-modeltranslation, que agrega una columna en las tablas que necesitan traducción para * cada * idioma ... –

Cuestiones relacionadas