Opened 4 years ago

Closed 4 years ago

#31048 closed New feature (duplicate)

Proposal to add `--dry-run` flag to `makemessages` command

Reported by: Sobolev Nikita Owned by: nobody
Component: Internationalization Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Sobolev Nikita)

Sometimes I face a little, but really annoying problem with django: quite often developers forget to add or modify translations after some code changes are made. As the result some strings end up untranslated for final users.

And it is really hard (or even impossible) to test or automate on user's end.
Current solution is to watch for this kind of things during code reviews (error-prone) and E2E manual tests (too expensive).

To solve this problem we can add --dry-run option to makemessages command to fail the build if some untranslated strings or even whole locales are found.

That's exactly how other commands behave:

  • makemigrations --dry-run fails the build when any new migrations would be created
  • collectstatic --dry-run ensures that everything works for the static files

But for some reason the same behaviour for makemessages is not available.
Nor I was able to find any existing 3rd party solutions.

My attempt to add custom checkmessages command was unsuccessful due to very complicated code structure and multiple required mocks of the original command.

On the other hand, it could be quite difficult to implement. Because, there are a lot of machinery and corner-cases involved.
And as I understand there's no incremental mode or --dry-run in gettext world.

Original idea from wemake-django-template: https://github.com/wemake-services/wemake-django-template/issues/995

Looking forward to hearing your feedback, thanks!

Change History (2)

comment:1 by Sobolev Nikita, 4 years ago

Description: modified (diff)

comment:2 by Baptiste Mispelon, 4 years ago

Resolution: duplicate
Status: newclosed

I think what you're asking for is tracked as part of #26803 (if I understand correctly, your proposed --dry-run is called --exit in that other ticket).

Note: See TracTickets for help on using tickets.
Back to Top