On 02/19/08 21:26, Ludwig Nussel wrote:
Klaus Schmidinger wrote:
Apparently there are macros for this, like PRId64 and such. But i don't like having to write something like
int64_t n = ...; printf("Some number %" PRId64 "\n", n);
Don't know if the gettext mechanisms would be able to handle
tr("Some number %" PRId64 "\n")
I wonder why there ar no proper format specifiers for this. Or are there?
The gettext info page says:
A similar case is compile time concatenation of strings. The ISO C 99 include file `<inttypes.h>' contains a macro `PRId64' that can be used as a formatting directive for outputting an `int64_t' integer through `printf'. It expands to a constant string, usually "d" or "ld" or "lld" or something like this, depending on the platform. Assume you have code like
printf ("The amount is %0" PRId64 "\n", number);
The `gettext' tools and library have special support for these `<inttypes.h>' macros. You can therefore simply write
printf (gettext ("The amount is %0" PRId64 "\n"), number);
The PO file will contain the string "The amount is %0<PRId64>\n". The translators will provide a translation containing "%0<PRId64>" as well, and at runtime the `gettext' function's result will contain the appropriate constant string, "d" or "ld" or "lld".
So translations should still work. The ugliness of those macros remains.
I agree. I wonder who came up with this <adjective censored> idea? Why would somebody totally break the printf mechanisms and introduce such ugly macros?
I really hope we can avoid this insanity in VDR...
Klaus