8 votes

i18n ne fonctionne pas dans l'environnement de production sur heroku

J'ai vu plus d'une centaine de posts sur les questions d'i18n et aucune solution ne semble résoudre mon problème.

J'ai une application fonctionnant avec Django 1.3.1 et elle fonctionne bien sur ma machine de développement. Mais quand je passe à heroku rien ne se passe. Les fichiers ne sont pas traduits du tout. Il semble que le dossier de la locale dans mon projet ne soit pas trouvé.

Le dossier Locale se trouve au niveau de mon projet et voici mes paramètres :

BASE_PATH = os.path.dirname(os.path.abspath(__file__))

LANGUAGE_CODE = 'pt-br'

USE_I18N = True

USE_L10N = True

ugettext = lambda s: s
LANGUAGES = (
    ('en-us', ugettext('English')),
    ('pt-br', ugettext('Portuguese')),
)

LOCALE_PATHS = (
       os.path.join(BASE_PATH, "locale"),
)

Le dossier Locale suit cette structure :

locale
    pt_BR
        LC_MESAGES
            django.mo
            django.po

0voto

goose Points 814

Je tiens à souligner un commentaire de @msaad ci-dessus. Si vous développez sous Mac OS X et que votre répertoire de traduction est tout en minuscules, changez-le de es_es -> es_ES et redéployez. Cela a résolu le problème pour moi. Sur OS X le système est insensible à la casse, mais sur les systèmes linux il ne l'est pas.

0voto

mirek Points 188

Je ne réponds pas en rapport avec Heroku, mais juste pour avoir la plupart des possibilités rassemblées :

J'ai un serveur de développement Debian 10 et un serveur virtuel Debian 10 en production. Tout était correct en développement, mais l'internationalisation a échoué en production.

Motif : J'avais besoin apt install gettext .

Et en outre, assurez-vous que Les fichiers .mo sont dans git et non désactivé par .gitignore (cette réponse est déjà ici),

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X