#36368: `makemessages` command runs `write_po_file()` multiple times for the same
potfile
-------------------------------------+-------------------------------------
Reporter: Michał Pokusa | Owner: (none)
Type: Bug | Status: closed
Component: Core (Management | Version: 5.2
commands) |
Severity: Normal | Resolution: needsinfo
Keywords: makemessages | Triage Stage:
write_po_file | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 1 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Michał Pokusa):
Thank you for looking into it.
I prepared a very minimal project that will show the issue:
https://github.com/michalpokusa/django-test-project/tree/ticket-36368
Everything is default as from the `startproject` except the optional
`LOCALE_PATHS` setting and a `debug_makemessages` command, which is copy-
pasted `makemessages` command with some prints for clarity.
The bug is present also in `makemessages`, but it is not clearly visible,
that is why I added this command, but it is not necessary to reproduce.
Without setting `LOCALE_PATHS` in `settings`:
{{{
(.venv) [2025-05-06 00:44:31] michalpokusa@dev:~/projects/django-ticket-
xyz$ python manage.py debug_makemessages --locale en
settings.LOCALE_PATHS: []
locale_paths inside handle(): ['/home/michalpokusa/projects/django-
ticket-xyz/locale']
self.locale_paths at the end of find_files():
['/home/michalpokusa/projects/django-ticket-xyz/locale',
'/home/michalpokusa/projects/django-ticket-xyz/locale']
potfiles returned from build_potfiles(): ['/home/michalpokusa/projects
/django-ticket-xyz/locale/django.pot', '/home/michalpokusa/projects
/django-ticket-xyz/locale/django.pot']
processing locale en
calling write_po_file
calling write_po_file
}}}
With `LOCALE_PATHS` set to `[BASE_DIR / "locale"]`:
{{{
(.venv) [2025-05-06 00:48:44] michalpokusa@dev:~/projects/django-ticket-
xyz$ python manage.py debug_makemessages --locale en
settings.LOCALE_PATHS: [PosixPath('/home/michalpokusa/projects/django-
ticket-xyz/locale')]
locale_paths inside handle(): [PosixPath('/home/michalpokusa/projects
/django-ticket-xyz/locale'), '/home/michalpokusa/projects/django-ticket-
xyz/locale']
self.locale_paths at the end of find_files():
['/home/michalpokusa/projects/django-ticket-xyz/locale',
PosixPath('/home/michalpokusa/projects/django-ticket-xyz/locale'),
'/home/michalpokusa/projects/django-ticket-xyz/locale']
potfiles returned from build_potfiles(): ['/home/michalpokusa/projects
/django-ticket-xyz/locale/django.pot', '/home/michalpokusa/projects
/django-ticket-xyz/locale/django.pot', '/home/michalpokusa/projects
/django-ticket-xyz/locale/django.pot']
processing locale en
calling write_po_file
calling write_po_file
calling write_po_file
}}}
--
Ticket URL: <
https://code.djangoproject.com/ticket/36368#comment:3>