Parameter Reihenfolge bei printf
-
Hallo,
mein Chef hat mich auf die Tatsache aufmerksam gemacht, dass die Übersetzung unserer Texte nicht optimal funktioniert, weil unsere Format-Strings starre Parameterreihenfolgen haben.
Also bei
printf("Das ist der %d. Durchlauf von insgesamt %d", current, complete);
könne der Übersetzer nur schwer einen echten natürlichsprachlichen Satz schreiben ohne die Reihenfolge der Parameter abzuändern.
Meine Frage nun: Wie macht man es besser?
-
Da bleibt wohl nur, dir eine eigene printf()-ähnliche Funktion zu schreiben, bei der du den Formatkennungen ergänzen kannst, auf welchen Parameter sie sich beziehen sollen).
(boost::format beherrscht sowas, wenn ich mich richtig erinnere - aber das ist C++)
-
Du könntest ne Funktion schreiben, die $1 ... $9 etc mit den richtigen Parametern ersetzt also
foo("Das ist der $1. Durchlauf von insgesamt $2", current, complete);
und
foo("Das ist der $2. Durchlauf von insgesamt $1", complete, current);
was das Gleiche ergibt.
-
Ich glaub GNU Gettext hat dafür bereits eine Lösung. Schau da vielleicht mal.
-
unter Windows gibt's dazu die FormatMessage-Funktion
-
Wo wir dabei sind: Unter GNU kann printf auch Positionsbezeichner wie z.B. "%1$s"
-
Danke für die Anregungen und Hinweise. Gibt es denn da nichts einheitliches? Prinzipiell müsste doch jeder Softwarehersteller dieses Problem haben?