'Git command when translating files in Django

I have an existing application in Django. I want to add a translation on the page. On page I have:

{% trans 'Projects'%}

In .po file I added:

#: templates/staff/site.html: 200
msgid "Projects"
msgid "Projekty"

Then executes the command:

django-admin.py compilemessages -l pl

After this command, I get an error:

CommandError: This Should Be Run script from the Django Git checkout or your project or app tree, or with the settings Specified module.


Solution 1:[1]

$ python manage.py compilemessages --settings nsp.settings

CommandError: This script should be run from the Django Git checkout or your project or app tree, or with the settings module specified.

I have got this error while I truly was inside project root folder. The problem was, that I was running this command without python manage.py makemessages first.

The error message is misleading.

Solution 2:[2]

If you are using docker containers to build and deploy your application you should copy folder:

conf/

from root folder of your django project. with the conf folder you should see i.e:

processing file django.po in /gamma/conf/locale/en/LC_MESSAGES
processing file django.po in /gamma/conf/locale/es/LC_MESSAGES
processing file django.po in /gamma/conf/locale/pt_BR/

without the conf folder you should see a clueless message like that:

CommandError: This script should be run from the Django Git checkout or your project or app tree, or with the settings module specified.

Solution 3:[3]

The error message is saying that it could not find the translations files where it expected them to be. Check that everything is correctly setup:

  • LOCALE_PATHS is defined in your settings.py
  • the files exist in the folder defined above (created by running python manage.py makemessages)
    • actually the error goes away even with just an empty locales folder
  • the compilemessages command is run from the project root folder

Solution 4:[4]

If you haven't set LOCALE_PATHS in your settings file, you need to do so:

import os
LOCALE_PATHS = [os.path.join(BASE_DIR, 'locale')]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mike 'Pomax' Kamermans
Solution 2
Solution 3 sox with Monica
Solution 4 Flimm