I followed the whole documentation about text translation, but django doesn’t take my .mo file into account.
Some facts:
- I created a
conf/locale/folder at the root of my project django.powas generated successfully withdjango-admin.py makemessages -l frdjango.mowas generated successfully withdjango-admin.py compilemessages
So my folder structure is:
project/
site/
locale/
fr/
LC_MESSAGES/
django.mo
django.po
- In
settings.py, I have setLANGUAGE_CODE = 'fr' - My browser correctly sends
Accept-Language:fr-FR,fr; request.LANGUAGE_CODEshowsfrfrom my views
But I get nothing translated… How to make django take these files into account ?
Edit
Adding /home/www/project/locale to settings.LOCALE_PATHS works. However, Django should find this path by itself, and I don’t like using absolute paths. What happens here ?
LOCALE_PATHS
Django looks for translation files in 3 locations by default:
LOCALE_PATHS/(language)/LC_MESSAGES/django.(po|mo)$APPPATH/locale/(language)/LC_MESSAGES/django.(po|mo)$PYTHONPATH/django/conf/locale/(language)/LC_MESSAGES/django.(po|mo)LOCALE_PATHS only need to be used if your translation files aren’t in your app directories or on the PYTHON_PATH.
An example of LOCALE_PATHS in settings.py
MIDDLEWARE_CLASSES
Add
django.middleware.locale.LocaleMiddlewaretoMIDDLEWARE_CLASSESin settings.pyLANGUAGES