L'internazionalizzazione di Django è molto bella (basata su gettext, LocaleMiddleware), ma qual è il modo corretto di tradurre il nome del modello e gli attributi per le pagine di amministrazione? Non ho trovato nulla di questo nella documentazione:Internazionalizzazione di Django per pagine di amministrazione - traduce il nome e gli attributi del modello
- http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
- http://www.djangobook.com/en/2.0/chapter19/
Vorrei avere "Выберите заказ для изменения" invece di "Выберите ordine для изменения". Nota, l''ordine' non è tradotto.
Innanzitutto, ho definito un modello, attivato USE_I18N = True
in settings.py, eseguito django-admin makemessages -l ru
. Per impostazione predefinita non vengono create voci per i nomi e gli attributi del modello.
grep nel codice sorgente di Django ho trovato:
$ ack "Select %s to change"
contrib/admin/views/main.py
70: self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
Così il verbose_name
meta di proprietà sembra giocare un qualche ruolo qui. Provato ad usarlo:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
Ora il po
file aggiornato contiene msgid 'order'
che può essere tradotto. Quindi inserisco la traduzione. Purtroppo le pagine di amministrazione mostrano lo stesso mix di "Выберите order для изменения".
Attualmente sto usando Django 1.1.1. Qualcuno potrebbe indicarmi la documentazione pertinente? Perché google non può. ;-) Nel frattempo sarò scavare più a fondo nel codice sorgente di Django ...
Mi dispiace chiedere, ma dopo aver aggiornato il file .po hai eseguito ./manage.py makemessages per aggiornare il file .mo? –
'makemessages' aggiorna solo i file po. Penso che tu intenda 'django-admin compilemessages' - grazie per il tuo suggerimento! Ho pensato perché Python è un linguaggio dinamico , i file di traduzione non sono compilato, in opposto a C. Purtroppo la mia soluzione ancora non funziona fornire una traduzione misto (lingue sono misti in una frase). Per il nome del modello viene utilizzata l'impostazione LANGUAGE_CODE del progetto. La lingua per il messaggio rimanente è determinata da l'agente utente ('Accept-Languages'). Mi sottoporrò all'esperimento con una traduzione lenta e dirò se funziona . – geekQ