Djangos Internationalisierung ist sehr schön (Gettext basiert, LocaleMiddleware), aber was ist der richtige Weg, um den Modellnamen und die Attribute für Admin-Seiten zu übersetzen? Ich habe etwas über diese nicht in der Dokumentation:Django Internationalisierung für Admin-Seiten - übersetzen Modellnamen und Attribute
- http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
- http://www.djangobook.com/en/2.0/chapter19/
Ich möchte "Выберите заказ для изменения" statt "Выберите um для изменения" haben. Beachten Sie, dass die 'Bestellung' nicht übersetzt wird.
Zuerst habe ich ein Modell definiert, aktiviert USE_I18N = True
in settings.py, führen Sie django-admin makemessages -l ru
. Für Modellnamen und Attribute werden standardmäßig keine Einträge erstellt.
greppen im Code Django Quelle gefunden:
$ 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))
So ist die verbose_name
Meta Eigenschaft scheint hier eine gewisse Rolle zu spielen. Versucht, es zu benutzen:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
nun die aktualisierte po
Datei enthält msgid 'order'
, die übersetzt werden kann. Also lege ich die Übersetzung in. Leider laufen die Admin-Seiten zeigen die gleiche Mischung von "Выберите спорт для изменения".
Ich verwende derzeit Django 1.1.1. Kann mir jemand auf die relevante Dokumentation verweisen? Weil Google nicht kann. ;-) In der Zwischenzeit werde ich tiefer in die django Quellcode graben ...
Entschuldigen Sie die Frage, aber nachdem Sie die .po-Datei aktualisiert haben, haben Sie ./manage.py Makemessages ausgeführt, um die .mo-Datei zu aktualisieren? –
'makemessages' aktualisiert nur die po-Dateien. Ich denke, Sie meinen 'Django-Admin Compilemessages' - danke Sie für Ihren Hinweis! Ich dachte, weil Python eine dynamische Sprache ist, sind die Übersetzungsdateien nicht kompilierte, im Gegensatz zu C. leider noch meine Lösung nicht funktioniert eine gemischte Übersetzung liefern (Sprachen sind in einem Satz gemischt). Für den Modellnamen wird die Einstellung LANGUAGE_CODE des Projekts verwendet. Die Sprache für die verbleibende Nachricht wird durch der Benutzer-Agent ("akzeptieren-Sprachen") bestimmt. Ich werde mit fauler Übersetzung experimentieren und sagen, ob es funktioniert. – geekQ