6

J'ai rencontré un problème étrange lors de la traduction de chaînes (dans l'admin) en utilisant gettext de django: Exécution locale du serveur dev toutes les traductions sont affichées correctement dans l'admin, mais lorsque le projet est déployé sur le serveur de production certaines chaînes ne sont pas traduites du tout. Je ne peux pas déterminer de système derrière lequel les chaînes sont affectées et lesquelles ne le sont pas!La traduction de gettext ne fonctionnait pas sur le système de production

Pour vous donner une impression, par ex. un modèle est défini comme:

class Company(models.Model): 

    .... 

    class Meta: 
     verbose_name = _('Company Profile') 
     verbose_name_plural = _('Company Profiles') 

Utilisation d'un serveur dev le nom du modèle apparaît correctement dans différentes langues dans l'administration, sur le serveur de production non! Cela affecte certains modèles, d'autres pas ... Ce me rend vraiment les noix, puisque j'ai à peine une idée sur la façon de déboguer ce ...

+1

Peut-être 'ugettext_lazy' versus' ugettext'? – Wolph

Répondre

7

Quelques possibilités:

  • serveur de production ne voir les messages compilés
  • les messages non traduits sont marqués comme fuzzy
  • _() décide de ugettext au lieu de ugettext_lazy
+0

Ils ne sont pas marqués comme flous, mais pouvez-vous peut-être nommer quelques raisons pour lesquelles le serveur ne verrait pas les messages compilés (ils sont dans les répertoires de l'application). Vous n'avez pas encore lu le problème de l'utilisation de 'ugettext' au lieu de' ugettext_lazy'? –

+1

Ok. résolu maintenant. J'héritais d'un modèle qui utilisait 'ugettext', alors que l'enfant utilisait' ugettext_lazy', alors j'ai eu ce mélange étrange! Merci! –

+0

Ce que je voulais dire, c'est que peut-être par exemple. les messages compilés n'ont pas été validés sur le serveur. Rien de magique, juste que de telles choses triviales arrivent parfois. –

3

J'ai eu comme problème imilar et en dehors de ce que Tomasz Zielinski a fait remarquer que je devais faire les modifications suivantes:

dans settings.py

LOCALE_PATHS = (
    "/path/to/your/project/locale", 
) 

Rappelez-vous le slash et assurez-vous que la structure de répertoire ressemble à quelque chose comme:

project 
    your_app 
    your_other_app 
    locale 
     en_US 
      LC_MESSAGES 
     sv_SE 
      LC_MESSAGES