2010-08-20 15 views
7

Sto sviluppando un nuovo progetto da zero con Django. Vedo che ci sono molte app per la gestione della traduzione di contenuti dinamici.Quale sistema di internazionalizzazione dinamica utilizzare nei progetti Django?

  • Django-multilingue
  • Django plug-model-i18n
  • Django-modeltranslation
  • Transdb
  • Django-multilingue-modello-
  • Django-Transmeta

per citarne alcuni.

Transdb, transmeta e multilingue suonavano bene, ma voglio leggere alcune esperienze personali.

Quale di questi dovrei scegliere?

+1

Senza reali esigenze, la risposta è "si tira un dado." Ci sono sei scelte Sei facce su un dado. Roll and go. Se non ti piace la risposta ai dadi, allora dovrai pensare ai requisiti o riflettere sui motivi per cui non ti piacerebbe una delle scelte se fosse stata scelta per te da un estraneo. –

+0

Senza requisiti reali, la risposta rimane "tira un dado". –

risposta

5

Sono d'accordo con S.Lott in quanto vorrete pensare a ciò che vi serve dall'internazionalizzazione. Tuttavia, questo è un ottimo run-down di tutti i pacchetti citati:

http://blog.muhuk.com/2010/01/06/dynamic-translation-apps-for-django.htm

La mia scelta personale finora è "nessuna delle precedenti". Attualmente sto prototipazione con Datatrans:

http://github.com/citylive/django-datatrans

http://www.botondus.com/dynamic-translation-with-django-datatrans/

Ma posso ancora scegliere un'altra soluzione.

0

Sto usando il django i18n per un progetto bilingue: sono davvero molto soddisfatto di questo e lo consiglierei sicuramente, ma devo dire che non ho mai provato uno degli altri .. .

+0

Non è un metodo elegante da utilizzare con contenuti dinamici. – yigit

+0

Uh, interessante ... Perché no? – dolma33

+3

Prima di tutto è necessario un qualche tipo di trucco per aggiungere il contenuto traducibile nel database ai file .po. Quindi è necessario fornire un'interfaccia per i generatori di contenuti per modificare e compilare tali file. Infine, è necessario riavviare l'applicazione per rendere effettive le modifiche, che possono essere abusabili se i tuoi operatori hanno questo privilegio. Il supporto i18n integrato di Django è perfetto per il testo statico. – yigit

3

ci sono 2 tipi di modello di traduzione:

  1. Aggiunta in più colonne/campi per il modello di tradurre
  2. Utilizzando una seconda tabella per le traduzioni

Il primo approccio è più efficiente perché non si utilizzano join aggiuntivi. E il secondo è meno invadente perché non modifica la tabella del modello originale. A me personalmente piace la prima opzione e questo è uno dei motivi principali per cui utilizzo django-modeltranslation.

Puoi anche dare un'occhiata a questo comparison grid.

2

Django-nani è un'applicazione nuova di zecca, che è veloce e ben scritta utilizzando probabilmente il miglior approccio di progettazione.

È ancora in fase di sviluppo ma funziona bene e ha uno documentation completo.

Si tratta di un frammento di vedere come i modelli multilingue sono definiti:

from django.db import models 
from nani.models import TranslatableModel, TranslatedFields 


class DjangoApplication(TranslatableModel): 
    name = models.CharField(max_length=255, unique=True) 
    author = models.CharField(max_length=255) 

    translations = TranslatedFields(
     description = models.TextField(), 
     description_author = models.CharField(max_length=255), 
    ) 

    def __unicode__(self): 
     return self.name 
Problemi correlati