Translatable strings with formatting of 64bit values

Поиск
Список
Период
Сортировка
От Ildus Kurbangaliev
Тема Translatable strings with formatting of 64bit values
Дата
Msg-id 20180425141324.111ec08e@wp.localdomain
обсуждение исходный текст
Ответы Re: Translatable strings with formatting of 64bit values  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,

apparently gettext can't properly identify strings when 64bit values
formatted with macros like INT64_FORMAT and UINT64_FORMAT. I did
some research and found out that gettext can work with PRId64 and
PRIu64. My suggestion is to use these macro for such strings.

The problem is here that PRIu64 is not accessible on all platforms but
this is easy solvable if it will be specified using INT64_MODIFIER in
c.h.

I attached a sample patch that adds PRIu64, PRId64 and makes few strings
translatable.

Using PRId64 will simplify the code like this:

        char        bufv[100],
                    bufm[100],
                    bufx[100];

        snprintf(bufv, sizeof(bufv), INT64_FORMAT, next);
        snprintf(bufm, sizeof(bufm), INT64_FORMAT, minv);
        snprintf(bufx, sizeof(bufx), INT64_FORMAT, maxv);
        ereport(ERROR,
                (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
                 errmsg("setval: value %s is out of
        bounds for sequence \"%s\" (%s..%s)", bufv,
        RelationGetRelationName(seqrel), bufm, bufx)));


To:

    if ((next < minv) || (next > maxv))
        ereport(ERROR,
                (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
                 errmsg("setval: value %s is out of
    bounds for sequence \"%" PRId64 "\" (%" PRId64 "..%" PRId64
    ")", next, RelationGetRelationName(seqrel), minv, maxv)));

In result:

#: commands/sequence.c:944
#, fuzzy, c-format
#| msgid "setval: value %s is out of bounds for sequence
\"%s\" (%s..%s)"
msgid "setval: value %s is out of bounds for sequence
\"%<PRId64>\" (%<PRId64>..%<PRId64>)"
msgstr "setval передано значение %s вне пределов последовательности
\"%s\" (%s..%s)"

And still this string will be translatable. I found a bunch of places
when PRIx64 macros can simplify the code.

--
---
Ildus Kurbangaliev
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Stas Kelvich
Дата:
Сообщение: unused_oids script is broken with bsd sed
Следующее
От: Andrew Gierth
Дата:
Сообщение: Re: lazy detoasting