L'internationalisation de Django est très agréable (basée sur gettext, LocaleMiddleware), mais quelle est la bonne façon de traduire le nom du modèle et les attributs des pages d'administration? Je ne trouve rien à ce sujet dans la documentation:L'internationalisation de Django pour les pages d'administration - traduire le nom et les attributs du modèle
- http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
- http://www.djangobook.com/en/2.0/chapter19/
je voudrais avoir "Выберите заказ для изменения" au lieu de "l'ordre Выберите для изменения". Notez que la 'commande' n'est pas traduite.
D'abord, j'ai défini un modèle, activé USE_I18N = True
dans settings.py, exécutez django-admin makemessages -l ru
. Aucune entrée n'est créée par défaut pour les noms de modèles et les attributs.
Grepping dans le code source Django j'ai trouvé:
$ 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))
Ainsi, la propriété verbose_name
méta semble jouer un rôle ici. Essayé de l'utiliser:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
Maintenant le fichier mis à jour contient po
msgid 'order'
qui peut être traduit. J'ai donc mis la traduction en. Malheureusement, l'exécution des pages admin montre le même mélange de "Выберите order для изменения". J'utilise actuellement Django 1.1.1. Quelqu'un pourrait-il me diriger vers la documentation pertinente? Parce que google ne peut pas. ;-) En attendant, je vais creuser plus profondément dans le code source django ...
Désolé de demander, mais après avoir mis à jour le fichier .po avez-vous exécuté ./manage.py makemessages pour mettre à jour le fichier .mo? –
'makemessages' ne fait que mettre à jour les fichiers po. Je pense que vous voulez dire 'compilemessages django-admin' - merci vous pour votre indice! Je pensais que Python est un langage dynamique , les fichiers de traduction ne sont pas compilé, en face de C. Malheureusement, ma solution ne fonctionne toujours pas fournir une traduction mixte (langues sont mixtes en une seule phrase). Pour le nom du modèle, le paramètre LANGUAGE_CODE du projet est utilisé. La langue pour le message restant est déterminée par l'agent utilisateur ('Accept-Languages'). Je vais expérimenter avec la traduction paresseuse et dire si ça fonctionne . – geekQ