skazhy
skazhy

Reputation: 4651

Django doesn't create translation .po files

I have my translation strings only in templates (stored in the project_dir/Templates), I tried running the $ django-admin.py createmessages -l ru both in the project root directory and in the app directories that use templates with trans. strings. It created folders locale/ru/LC_MESSAGES but the folders were empty. I tried to add the django.po files manually (with the syntax mentioned in the l10n docs). And ran the createmessages -a and compilemessages commands. It created the .mo files, but the translations didn't appear in the browser.

  1. As I created the .po files manually I had no lines starting with #. What should I write there?
  2. My template files are in different folder than the .py files for apps. Should I put some extra links to them?

Upvotes: 12

Views: 23503

Answers (3)

omnia mahmoud
omnia mahmoud

Reputation: 1

To fix empty po files:

  1. Make sure you did the needed changes for the templates as mentioned in the documentation. Please make sure that you are checking the correct documentation version for your project.
  2. You can add a locale directory in your templates directory and add its path to the LOCALE_PATHS list. (Optional, but helpful to make sure that the template directory is included in step 4)
  3. Go to the project_dir (you should run the next command in a parent directory of the files to be translated)
  4. Run the command django-admin makemessages -l ru

Upvotes: 0

addmoss
addmoss

Reputation: 692

For newer versions of Django (e.g. 3.2):

  1. in the root directory create folder "locale"

  2. run command django-admin makemessages -l ru

  3. update your language files (located in the locale folder)

  4. run django-admin compilemessages

  5. Configure the LOCALE_PATHS in settings.py, otherwise you won't see the translations:

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

    LANGUAGE_CODE = 'ru'

Upvotes: 1

jujule
jujule

Reputation: 11521

did you try :

python manage.py makemessages -a 

from project root and app ?

this should create a .po that you have to edit. be sure to remove 'fuzzy' stuff everywhere.

then :

python manage.py compilemessages

You need to restart the server

Upvotes: 24

Related Questions