Unable to find a locale path to store translations for file __init__.py

Turns out you need to create a locale folder first using mkdir locale. If you are running the command from within an app folder, you need a locale folder within that app folder.


The problem is that the command is not run from the app directory but from the project directory. This snippet from the docs explains it:

Turns out you need to create a locale folder first using mkdir locale.

./manage.py makemessages […] Runs over the entire source tree of the current directory and pulls out all strings marked for translation. It creates (or updates) a message file in the conf/locale (in the Django tree) or locale (for project and application) directory.

So, you either run the command from the app directory:

$ cd app
$ django-admin makemessages -l <locale>

… or you define a project wide locale directory using LOCALE_PATHS and you can run makemessages from the main directory from there on.

Either way, you should check that the ./locale/directory is present and create it using

$ mkdir locale

in case it's not.


Actually you can configure where the locale folder is. In your settings.py add:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

Then create a folder for each of the languages you want to translate:

mkdir -p website/locale/de