Opened 11 years ago
Closed 3 years ago
#22617 closed Cleanup/optimization (needsinfo)
Allow to fix translation -> Fix makemessages to not delete debug data and hide errors (and all similar modules using "msgmerge")
Reported by: | Cezary.Wagner | Owned by: | nobody |
---|---|---|---|
Component: | Core (Management commands) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Ad Timmering | Triage Stage: | Unreviewed |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | yes |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Please replace code in make messages to not delete *.po files if error occurred and show messages (fix exception later).
Replace this code:
if errors: if status != STATUS_OK: raise CommandError( "errors happened while running msgmerge\n%s" % errors) elif self.verbosity > 0: self.stdout.write(errors)
With this code (it shows error root cause and save/copy *.po need to solve this error):
if errors: if status != STATUS_OK: self.stdout.write(errors) # bug exception bellow not shows errors import shutil shutil.copyfile(pofile, '%s.debug' % pofile) raise CommandError( "errors happened while running msgmerge\n%s" % errors) elif self.verbosity > 0: self.stdout.write(errors)
All modules using command line tools should report errors and not delete input if error occurred.
Change History (16)
comment:1 by , 11 years ago
comment:3 by , 11 years ago
Not known about such option but should not help too much since many bugs is in code - see my pulls on github.
- Messages from msgmerge is not presented since bug - exception blocks print out.
- --keep-pot is not presented in --help I think so (not checked but never seen it before - o.k. since it from 1.6).
I think problem is with "blocktrans" on 60% - I gave up now - I was done very large project more than 1k strings.
comment:5 by , 11 years ago
I will let someone more familiar with makemessages
make a call on whether or not anything needs to be done here, but for some more context, I also closed #22615 and #22616 which are related.
I do see --keep-pot
in the help for makemessages
on 1.6 (I'm not sure if that's what you are saying in the above comment).
comment:6 by , 10 years ago
Resolution: | → needsinfo |
---|---|
Status: | new → closed |
comment:7 by , 10 years ago
You not understand this bug really - it is not problem of *.pot bit *.po file. As far as I remember there is not help if I use --keep-pot.
It not helps :)
Read it again "Messages from msgmerge is not presented since bug - exception blocks print out." - I will reopen until we will find some solution - I will not give up now ...
comment:8 by , 10 years ago
It is not solve still "Messages from msgmerge is not presented since bug - exception blocks print out." is in force!
You need to known where in django template there is error - --keep-pot allow nothing in this case.
comment:9 by , 10 years ago
Resolution: | needsinfo |
---|---|
Status: | closed → new |
comment:10 by , 10 years ago
It seems there is some confusion with this ticket, to clarify:
keep-pot
option ONLY prevent Django from deleting the temporary .pot- this patch ensure that we don't delete the original PO file when
msgmerge
fails.
I haven't be able to test it as I guess it's a bit tricky to make msgmerge
fails.
The PR looks good but I would recommend to move 'import shutil' at the top of the file.
comment:11 by , 10 years ago
Component: | Uncategorized → Core (Management commands) |
---|---|
Description: | modified (diff) |
Type: | Uncategorized → Cleanup/optimization |
comment:12 by , 10 years ago
Has patch: | set |
---|---|
Triage Stage: | Unreviewed → Accepted |
Version: | 1.6 → master |
Let's see if we can get someone to review the patch. Is it feasible to add tests?
comment:13 by , 10 years ago
Patch needs improvement: | set |
---|
comment:14 by , 3 years ago
Cc: | added |
---|
comment:15 by , 3 years ago
@Mariusz: Thanks for cc'ing me. Would be happy to add some tests, however have been unable to replicate the behavior.
Forcably letting msgmerge
throw errors (by pausing the makemessages
process and messing up the intermediate file on purpose), does for me
(a) give sensible error messages, and
(b) they are actually displayed together with the CommandError
.
I searched SO etc. for other users with similar issues, but unfortunately couldn't find an example to build a test around.
I suggest closing as needsinfo
, pending the original author or someone else to provide an example of a case where the error message given with the exception does not provide enough information.
Example of an intentionally broken run:
(env) awtimmering @ ~/djtest $ ./manage.py makemessages --locale nl processing locale nl CommandError: errors happened while running msgmerge /home/awtimmering/djtest/locale/django.pot:49: keyword "msgid_plasdural" unknown /home/awtimmering/djtest/locale/django.pot:45: missing 'msgstr' section /home/awtimmering/djtest/locale/django.pot:49:16: syntax error msgmerge: found 3 fatal errors
comment:16 by , 3 years ago
Resolution: | → needsinfo |
---|---|
Status: | new → closed |
Triage Stage: | Accepted → Unreviewed |
Ad, Thanks for checking!
Does the --keep-pot option not help?