Обсуждение: [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)

От
Alvaro Herrera
Дата:
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



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