2010-09-17 3 views
3

J'ai un site Django assez simple (1.1) où j'ai besoin d'une interface de base et d'autres textes à traduire entre deux langues. J'ai créé les fichiers po en utilisant manage.py makemessages, les a traduits (en utilisant poedit), et compilé les fichiers mo en utilisant manage.py compilemessages comme indiqué dans le i18n docs for Django.Les chaînes traduites n'apparaissent pas lorsque je change de langue sur le site Django

Mais le problème est; la plupart des chaînes contiennent toujours montrées dans la langue originale ...

  • j'ai vérifié que les fichiers po fait toutes les chaînes
  • i vérifie que les fichiers mo ont été fraîchement générés après le dernier effort de traduction
  • la langue ne change en fait lorsque je passe en utilisant la méthode getlang()
  • quelques chaînes -do- finissent par être traduit quand je passe
  • , mais la plupart ne ...

Je ne sais pas vraiment où chercher ... Y at-il une application que je peux utiliser pour vérifier si les fichiers mo compilés sont valides & par exemple? Ces chaînes pourraient-elles être mises en cache? (Je n'utilise pas de middleware de mise en cache)

+0

Avez-vous créé les fichiers pour des applications séparées ou l'ensemble du projet? –

+0

Je les ai créées et traduites pour le projet entier, c'est-à-dire que j'ai couru la commande ci-dessus à partir de la racine du projet non individuellement pour chaque application – tijs

+0

Suite au commentaire de lazer, vous avez balisé les chaînes que vous voulez traduire dans vos propres modèles/modèles? –

Répondre

2

Trouvé !! Tout en tirant les cheveux en essayant de comprendre ce qui causait mes malheurs j'ai commenté django.middleware.locale.LocaleMiddleware de mon MIDDLEWARE_CLASSES et rafraîchi la page dans une tentative d'essayer tout. Évidemment, cela a juste annulé la traduction, mais quand je l'ai rallumé, toutes mes cordes traduites se sont révélées comme elles auraient dû l'être depuis le début.

Donc, je devine quelque chose, quelque part est compilé/mis en cache lorsque vous activez le middleware de paramètres régionaux et la seule façon de l'actualiser est de l'éteindre et de le rallumer. Redémarrer le serveur n'a pas aidé donc c'est un peu contre-intuitif, mais qui s'en soucie, ça marche! :)

Questions connexes