In gcc/java/parse.y there is this code: parse_error_context (cl, "Public %s %qs must be defined in a file called %<%s.java%>", (is_interface ? "interface" : "class"), IDENTIFIER_POINTER (qualified_name), IDENTIFIER_POINTER (raw_name));
The strings substituted for the first %s are not available for translation. But as it is written, they are the English words, not the syntactical tokens. So this can not be properly translated. Even if the words were markes for translation in isolation, composing a sentence like this is not in general possible to do for an arbitrary language. It needs to be split into two separate messages -- Summary: %s substituted with "interface"/"class" can't be properly translated Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: goeran at uddeborg dot se http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32249