Thread: [HACKERS] fixing pg_upgrade strings (was Re: pgsql: Add new files to nls.mkand add translation)
[HACKERS] fixing pg_upgrade strings (was Re: pgsql: Add new files to nls.mkand add translation)
From
Alvaro Herrera
Date:
Peter Eisentraut wrote: > Add new files to nls.mk and add translation markers This reminds me that I noticed a few days ago another really serious broken piece in pg_upgrade where check_required_directory() is incurring in the ugliest case of string building I've ever seen. I didn't have the courage to try to fix it back then, but I think we should dedicate it some time. It does this: pg_fatal("You must identify the directory where the %s.\n" "Please use the %s command-lineoption or the %s environment variable.\n", description, cmdLineOption, envVarName); and the callsites are like this: check_required_directory(&new_cluster.bindir, NULL, "PGBINNEW", "-B", _("new cluster binariesreside")); check_required_directory(&old_cluster.pgdata, &old_cluster.pgconfig, "PGDATAOLD","-d", _("old cluster data resides")); note the declensions don't match even in the English original. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Re: [HACKERS] fixing pg_upgrade strings (was Re: pgsql: Add new files to nls.mk and add translation)
From
Tom Lane
Date:
Alvaro Herrera <alvherre@2ndquadrant.com> writes: > It does this: > pg_fatal("You must identify the directory where the %s.\n" > "Please use the %s command-line option or the %s environment variable.\n", > description, cmdLineOption, envVarName); > and the callsites are like this: > check_required_directory(&new_cluster.bindir, NULL, "PGBINNEW", "-B", > _("new cluster binaries reside")); > check_required_directory(&old_cluster.pgdata, &old_cluster.pgconfig, > "PGDATAOLD", "-d", _("old cluster data resides")); > note the declensions don't match even in the English original. FWIW, I think the English declensions are fine as long as you consider "data" to be a group noun --- "data reside" would read a bit funny IMO. But certainly this is an utter translatability fail. Maybe pass a boolean to indicate one of two first sentences to use? Or actually, might as well consider the entire message string to be one of two translatable options. It's not like we have a need to indicate more than one option or envar name for each case. regards, tom lane