Paul Eggert writes: > True, but how would we fix it? Wouldn't it be possible to enumerate the objects, just as you do for the errors? That is, you would call
STRTOL_FATAL_ERROR (spec, block_size, e); where "block_size" is a value in an enumeration type defined in xstrtol.h similar to strtol_error. Then you could collect all the error messages in a two-dimensional table, and do a lookup in the _STRTOL_ERROR function. In this way the messages would still be collected in one place and not very hard to maintain? > There is a tradeoff here between ease of maintenance and idiomatic > translations. I find it slightly surprising, and amusing, that you consider it acceptable to do the tradeoff. To explain my point, let me make up an example. Assume the function absence(const char *who, enum reason) was meant to give a reason for absence. The function would do a case analysis just like _STRTOL_ERROR: case ill: error("%s is ill", who); break; case left: error("%s has left for the day", who); break; case dead: error("his creator has called %s home", who); break; Now call this function from different places: absence("John", r); absence("Richard", r); absence("Ann", r); absence("I", r); absence("they", r); This would break in the same way as the current implementation of _STRTOL_ERROR breaks for Swedish and other languages. (After translation to Swedish, only the case "dead" would be broken, b.t.w.) My question of course is: Would you argue that this breakage is an acceptable compromise between correct grammar and ease of maintenance? Now don't get this wrong. As I said, I am both a bit surprised and a bit amused. The question is asked with a friendly smile on my lips. And it is NOT purely rethorical. I am indeed curious on your view on what is reasonable and what is not. _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils