[GRASS-dev] translated options in descriptions
glynn at gclements.plus.com
Sun Aug 12 15:55:09 PDT 2012
> > I would like to point out that there was a bug in many
> > modules (around 30) which can appear only with localised grass
> > (fixed r52637). It produces only warning so probably it's
> > harmless however developers should avoid using option
> > descriptions in this way:
> > - params->query->descriptions =
> > - _("length;Select only lines or boundaries shorter"
> > - "/longer than threshold distance;"
> > - "dangle;Select dangles shorter/longer than " "threshold distance");
> > The problems appear when the translator translates the
> > option and not only its description. Translatable must be only
> > the description like this,
> > + desc_query = NULL;
> > + G_asprintf(&desc_query,
> > + "length;%s;"
> > + "dangle;%s",
> > + _("Select only lines or boundaries shorter"
> > + "/longer than threshold distance"),
> > + _("Select dangles shorter/longer than threshold distance"));
> > + params->query->descriptions = desc_query;
> is it a problem that G_asprint() can, in some rare cases, call
> G_fatal_error() (via G_calloc()) before G_parser() has been
> run? or is G_define_module() the critical fn to get past in that
I think that G_gisinit() should be sufficient. That calls
G_set_program_name(), which has historically been at the root of the
problems with early errors.
But this would be a good opportunity to fix what appears to be a
fundamental design flaw in the ->descriptions interface rather than
just work around it.
I would suggest replacing the above code with e.g.:
"length", _("Select only lines or boundaries shorter"
"/longer than threshold distance"),
"dangle", _("Select dangles shorter/longer than threshold distance"),
G_option_descs() would either construct the necessary ->descriptions
string, or (preferably) just fill in the ->descs field directly,
eliminating the need for the ->descriptions field altogether.
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev