Daichi Kawahata wrote:
> I might help you. If you mentioned the following case, there is
> no problem. A msgfmt compiles de.po ignoring this strings.

Ah, I see. If I understand correctly, non-matching format strings
are silently discarded (if tagged "fuzzy"). I've looked at the
created gtk-gnutella.mo and those strings actually don't appear in
it.

> #: src/ui/gtk/settings.c:1095
> #, fuzzy, c-format
> msgid "%u/%u host (%u%%)"
> msgstr "%v/%u (%P%%)"
 
> But a compilation was successfully even if the following case,
> it's something wrong.

Sure, the C compiler never sees these strings and can't complain and
technically C compilers don't have to check format strings. That's
simply a GCC feature. It's not invalid C, you're simply provoking
undefined behaviour (which includes crashes but this is the least
problem). I've noticed that by adding "fuzzy" as above to the item
all warnings are suppressed even for C format strings.

This item could be problematic. Fortunately, it's not used as format
string so it can't cause trouble.

#: src/ui/gtk/gtk2/search_cb.c:899
#, fuzzy
msgid "Query queued..."
msgstr "%u in Warteschlange"

However, it seems that gettext ignores it. When using the German
translation, the English string is used. The German translation
actually appears in gtk-gnutella.mo but the original English string
doesn't. This item is not tagged as c-format string and it's not
used as such, it's a pure string. I guess this is rather an accident
caused by automagically merging/updating de.po. The equivalent appears
in all other PO files except ja.po in which it's correctly translated.

-- 
Christian

Attachment: pgp3bbIILOBsL.pgp
Description: PGP signature

Reply via email to