Django Tutorial 5 – Localizzazione

Nella scorsa parte abbiamo visto come abilitare l’interfaccia di admin. Abbiamo notato però che non tutto era esattamente come ce lo aspettavamo. Per prima cosa tutte le tabelle terminavano con una fastidiosa “s” dovuta al plurale inglese, secondo, gli oggetti venivano visualizzati con un anonimo “Artista Object”, “Genere Object” e così via.

Per sistemare questi punti c’è un modo molto semplice.

  • Specificare il metodo __unicode__.
  • Aggiungere l’opzione verbose_name_plural come parametro della classe Meta di ogni oggetto del modello.
  • Impostare LANGUAGE_CODE = 'it-IT' nel file settings.py

Il metodo unicode specifica come verrà visualizzato un oggetto del modello X al posto della dicitura standard “X Object”. Per chi conosce il python è praticamente equivalente a ridefinire il metodo speciale __str__[/cc] di una classe (il metodo [cci]__str__ dei modelli Django chiamano proprio __unicode__).

La classe Meta, invece, è una classe speciale che permette di passare ai modelli delle opzioni particolari. Vedremo altre opzioni nel corso del tutorial. L’opzione che ci interessa ora è verbose_name_plural : se questo valore è None allora viene usato il suffisso “s” come nel caso inglese, altrimenti viene usato il valore della variabile.

Vediamo quindi qualche esempio:


class Artista(models.Model):
    nome = models.CharField(max_length=50)
    cognome = models.CharField(max_length=50)
    ruoli = models.ManyToManyField(Ruolo)

    def __unicode__(self) :
      return u"%s %s" % (self.nome, self.cognome)

    class Meta:
      verbose_name_plural = "Artisti"

Mostro il caso del modello “Artista”. Allo stesso modo intervenite anche su tutti i modelli restanti. Potete vedere il risultato in figura.

Come potete vedere adesso il risultato è molto più accettabile. La prossima volta vedremo come abbozzare un interfaccia pubblica al nostro sito.