[vdr] VDR developer version 1.5.15 - compilation warnings
ludwig.nussel at suse.de
Tue Feb 19 21:26:12 CET 2008
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.
(o_ Ludwig Nussel
//\ SUSE LINUX Products GmbH, Development
More information about the vdr