Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


#21 False excessive placeholder warning

Vít Šindlář

If translators use percent sign (be it "%" or "%%") in catalog translation file and the same sign is NOT present in catalog description file, flexcat warns about excessive placeholder. Can I ask you to see what's wrong? Test files attached.
Thank you.

1 Attachments


  • This will be fixed in the next release. Thanks for the hint.
    Please note that the fix will only affect the "missing/excessive placeholder" warning, but not the "mismatching placeholder" warning caused by the reordered arguments. Furthermore the "excessive placeholder" warning of MSG_TEXT_PERCENT_SIGN_4 will still be thrown, because a double percent sign is there for a reason and FlexCat cannot know if the string might be interpreted by a function like sprintf() or not.

    Do you need a binary for a specific system ahead of a release?

    Last edit: Thore Böckelmann 2012-11-13
  • Thank you. I included my recent test.(cd|ct) with all test-cases and I see this thread is about how to handle excessive placeholders. I'm not sure however, if handling the MSG_TEXT_PERCENT_SIGN_4 case as warning is correct. At least in AmigaOS4, program AmiDock required me to put "%%" there in order to display "%". I can't test it with the latest OS4 release right now as I lent my Sam440 to someone else but this is something that need to be checked. Is it an incorrect behavior on AmiDock's side or ... what to do? I obviously want get rid of as many warnings as possible.

    When it comes to your binary offer, don't worry, I can build it myself. And once fixed, I will study your changes to see if I'm able to fix bugs like this or at least propose necessary changes...

    • The point is that you can never know how the string (no matter if original or translated) will be used.
      Adding percent signs to the translation although the original string does not have them (or vice versa) is no good idea, as the string might or might not be scanned for placeholders. If you insert '%%' (just to make FlexCat quiet) and the string is used as it is the output will be wrong (double percent sign). If you insert '%' and the string is passed to sprintf() the percent sign will be eliminated and the output is wrong, too.

      To make it short: use exactly the same placeholders and percent signs in your translation as in the original strings, even if you think there is some information missing. Only the developer of the application knows how the strings are used and how the percent signs will be used.



Cancel   Add attachments