[vdr] VDR developer version 1.5.15 - compilation warnings

Ludwig Nussel 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.

cu
Ludwig

-- 
 (o_   Ludwig Nussel
 //\   SUSE LINUX Products GmbH, Development
 V_/_  http://www.suse.de/





More information about the vdr mailing list