https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38573
Jerry DeLisle <jvdelisle at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jvdelisle at gcc dot gnu.org --- Comment #6 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- (In reply to Frederic Marchal from comment #5) > This issue is still present in gcc 7. > > The strings assigned to symstd_msg in gfc_check_intrinsic_standard() should > be marked for translation. > > As it is, the current code in fortran/resolve.c at line 1709 outputs an > error message containing one untranslated fragment: > > /* Check it is actually available in the standard settings. */ > if (!gfc_check_intrinsic_standard (isym, &symstd, false, sym->declared_at)) > { > gfc_error ("The intrinsic %qs declared INTRINSIC at %L is not " > "available in the current standard settings but %s. Use " > "an appropriate %<-std=*%> option or enable " > "%<-fall-intrinsics%> in order to use it.", > sym->name, &sym->declared_at, symstd); > return false; > } > > I don't know how many languages could work around that string concatenation > and still present a meaningful message to the user but none can output a > legible message if %s isn't translated. Therefore, I recommend to mark the > strings for translation as a stopgap until a full i18n compatible solution > is available. > > I also suggest to write a comment for translators stating that %s is a > string such as "available since Fortran 77". It looks wrong to me here. The "but %s" makes no sense in English. There are two sentences in the above error message. Do you need the strings split like this? gfc_error ("The procedure %qs declared INTRINSIC at %L is not " "available with the current standard setting of %s. " "Try a different standard setting option (-std= ) or enable " "all intrinsics (-fall-intrinsics).", sym->name, &sym->declared_at, symstd);