2010-06-23 38 views
8

Ho e vecchio sito django (0.97-pre-SVN-7457) e sto per apportare alcune modifiche e ottenere il sito in esecuzione sul codice di sviluppo corrente di Django.Il modo più semplice per avere un sito django multilingue?

Ho un sacco di contenuti che devono essere intatti. Quando ho iniziato il sito, ho fatto un brutto "hack" per ottenere un sito a doppia lingua, in modo che il risultato non è abbastanza:

Ecco il mio modello:

class Entry(models.Model): 
title_NO = models.CharField(max_length=500) 
teaser_NO = models.TextField(blank=True, null=True,) 
body_NO = models.TextField(blank=True, null=True,) 
title_EN = models.CharField(max_length=500, blank=True, null=True) 
teaser_EN = models.TextField(blank=True, null=True,) 
body_EN = models.TextField(blank=True, null=True,) 
... 

Nei miei modelli che ho scritto:

<div id="language_NO"> 
<h1>{{object.title_NO}}</h1> 
..... 
</div> 
<div id="language_EN"> 
<h1>{{object.title_EN}}</h1> 
..... 
</div> 

E l'utilizzo di un semplice javascript per determinare wich div per mostrare (Stampa del contenuto di due volte nel modello è molto brutto, lo so!)

Così, ora che voglio fare alcune modifiche, qual è il modo migliore per andare?

Ho provato a leggere la documentazione sull'argomento, ma non riesco a trovare nulla che spieghi cosa fare con gli URL e i modelli.

L'unica cosa corrente che ho trovato è how to change the language correct

Il vostro aiuto è molto apprezzato!

+0

Il link che hai fornito ti fornisce tutte le informazioni necessarie per iniziare. –

risposta

3

La risposta che cercavo è questo:

nel mio modello:

{% load i18n %}{% get_current_language as LANGUAGE_CODE %} 

{% ifequal LANGUAGE_CODE "en" %}      
<h2>{{object.title_EN }}</h2> 
{% else %} 
<h2>{{object.title_NO }}</h2> 
{% endifequal %} 
2

Esistono vari progetti di terze parti che gestiscono questo tipo di cose. Here's one review.

2

Il codice Google ha una libreria che fornisce il supporto per multilingual content in Django models.

+0

Speravo che qualcuno mi indicasse un esempio completo. Non riesco ancora a impostare come configurare i miei modelli per utilizzare il contenuto norvegese quando viene selezionata la lingua norvegese e viceversa per il contenuto inglese, con l'impostazione che ho nei miei modelli.py Devo fare qualcosa del genere: { % se language_code.en%} {{ object.title_EN}} {% else%} {{ object.title_NO}} ... ? – Anthrax00

1

Dopo aver testato alcune applicazioni di tradurre i modelli, ho scelto django-modeltranlation.

Se si osserva questo confronto http://djangopackages.com/grids/g/model-translation/ si vedrà anche che è il pacchetto più utilizzato e non utilizza una seconda tabella. Avere i campi tradotti nella stessa tabella significa che non avremo bisogno di un join aggiuntivo.

1

Ho lottato con questo per un po 'e ho finito per scrivere un wrapper attorno all'approccio "più campi per ogni lingua" che hai descritto sopra.

Recupera automaticamente il valore corrispondente alla lingua in cui ci si trova (simile a gettext). Puoi verificarlo qui: https://github.com/zmathew/django-linguo

Problemi correlati