[GRASS-dev] Re: fprintf in raster modules converted to G_message

Glynn Clements glynn at gclements.plus.com
Thu Dec 14 05:55:31 EST 2006


Hamish wrote:

> > My suggestion is:
> > 
> > Index: include/glocale.h
> > ===================================================================
> > RCS file: /grassrepository/grass6/include/glocale.h,v
> > retrieving revision 2.2
> > diff -u -r2.2 glocale.h
> > --- include/glocale.h   26 Nov 2006 21:32:36 -0000      2.2
> > +++ include/glocale.h   13 Dec 2006 18:51:56 -0000
> > @@ -1,6 +1,11 @@
> >  #ifndef GRASS_GLOCALE_H
> >  #define GRASS_GLOCALE_H
> >
> > +#define ERRMSG_RASTER_OPEN_FILE        _("Unable to find raster map <%s>")
> > +#define ERRMSG_VECTOR_OPEN_FILE        _("Unable to find vector map <%s>")
> > +#define ERRMSG_ASCII_OPEN_FILE        _("Unable to find ASCII file <%s>")
> > +#define ERRMSG_OTHER_OPEN_FILE        _("Unable to find file <%s>")
> 
> 
> Will that hardcode whatever language GRASS was built with as the
> only translation it can use for those messages? Or will the _(macros)
> survive the build process and be processed normally at run-time?

Macros are substituted by the preprocessor, so there's no difference
between:

	G_fatal_error(ERRMSG_RASTER_OPEN_FILE, mapname);
and:
	G_fatal_error(_("Unable to find raster map <%s>"), mapname);

so far as the resulting object file is concerned.

In either case, the code which is actually compiled will be either:

	G_fatal_error(("Unable to find raster map <%s>"), mapname);
or:
	G_fatal_error(G_gettext(PACKAGE,("Unable to find raster map <%s>")), mapname);

depending upon whether I18N is enabled (in the latter case, PACKAGE
will have been expanded to either "grasslibs" or "grassmods").

-- 
Glynn Clements <glynn at gclements.plus.com>




More information about the grass-dev mailing list