Translation breaks IDE
David Malcolm
dmalcolm@redhat.com
Fri Mar 17 13:30:00 GMT 2017
On Fri, 2017-03-17 at 12:20 +0100, Richard Biener wrote:
> On Fri, Mar 17, 2017 at 9:48 AM, Frédéric Marchal <fmarchal@perso.be>
> wrote:
> > Hi,
> >
> > I gave my partial French translation a field trial this week and it
> > didn't went
> > well. QtCreator can't see error messages any more if they are
> > translated.
> >
> > QtCreator identifies errors and warnings by parsing gcc output:
> >
> > file.c:24:5: error: â¦
> > file.c:25:3: warning: â¦
> >
> > But if "error" and "warning" are translated it becomes impossible
> > to sort out
> > the messages.
> >
> > What can be done to help IDEs with translated messages?
> >
> > Is it possible to add some --ide-mode flag or some environment
> > variable that
> > would prefix every message with untranslated hard coded tags that
> > could be used
> > by IDEs? I'm thinking about something along the line:
> >
> > (E):file.c:24:5: <same message as now for errors, with translation>
> > (W): for warnings
> >
> > These two could be put to use immediately because QtCreator already
> > do
> > something similar with MSVC. It just lacks something as the above
> > mechanism to
> > do it with gcc.
> >
> > And it might be possibly to add other categories that could be used
> > later such
> > as:
> >
> > (F): for fatal errors
> > (N): for notifications and informations
> > (I): included by
> > (C): candidates for overloaded functions
> > (H): "called from here" or "in this context"
> > (!): internal error
> >
> > This list certainly needs more thinking and IDE folks could give
> > more insight
> > but you see were I'm heading.
>
> I think a IDE mode ("machine interface") would be fine. We already
> have
> -fdiagnostics-parseable-fixits for example, generalizing this to sth
> like
> -fdiagnostics-mi would be nice.
This all sounds a lot like:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79423
Paraphrasing myself from that RFE: given that many IDEs can already
parse LANG=C output, presumably you'd want a command-line flag that
suppresses just the translation of "error" and "warning" etc, so that
instead of output of the form:
[with LANG=ja_JP.utf-8]
/tmp/test.cc: 颿° âint x2()â å
:
/tmp/test.cc:3:4: ã¨ã©ã¼: some translated message here
x0 x3 = x3.
^~
/tmp/test.cc:1:7: åè: some other translated message here
class x0;
^~
you get:
/tmp/test.cc: In function âint x2()â:
/tmp/test.cc:3:4: error: the same *translated* message here
x0 x3 = x3.
^~
/tmp/test.cc:1:7: note: again, the message is still translated here
class x0;
^~
i.e. that the content of the messages themselves should still be
translated, even when in some kind of IDE mode; it's just the
"error"/"warning" etc boilerplate that shouldn't be.
I can implement this for gcc 8.
What should the diagnostic be called?
-fdiagnostics-output-format=VALUE
-fdiagnostics-mi
-fide
etc
Dave
More information about the Gcc
mailing list