Correct translation denied because of format specifications

I can’t translate entries 4668 and 4674 in exiv2 into spanish. It doesn’t matter what I write in I keep getting the error: “number of format specifications in ‘msgid’ and ‘msgstr’ does not match”.
Note that both 4668 and 4674 have a % simbol in it.

If I write “100 %” I get the error:
‘msgstr’ is not a valid C format string, unlike ‘msgid’. Reason: The string ends in the middle of a directive.

If I write “100 percent” I get:
number of format specifications in ‘msgid’ and ‘msgstr’ does not match

I can write “Tomato” and still get an error.

I am very lost here. I found your string:

I copied the english string, and that’s accepted. I tried with a translation and I only get an error message saying that something is wrong, but nothing about the format. I tried with %%, as it is how % should be escaped, but same error. Then I tried looking into the sources, but the string points to src/properties.cpp:1802 and that file doesn’t have 1802 lines. :man_shrugging:

1 Like

Hey there, this happens mainly because the translation parser considers the percent symbol as C-Style placeholder.


  • Trivial
    • String - Hello, %s, how are you today?
    • This can be translated easily - Ola, %s, como estan ahoy? (Please excuse my aweful Spanish)
  • Non trivial
    • String - What is the % of wrong answers?
    • I need to include “e %” in order to maintain the “placeholder”.

This is a very old bug in Rosetta and we’ve been experiencing it with Hebrew for a very long time.

You can just add the placeholder at the end and hope that some day it will go away, another option would be contributing back to the upstream, external TMSs (Translation Management Systems) usually have a better placeholder handling and it will differentiate the cases and you will be able to submit the correct string.

Sorry but Rosetta needs a lot of improvements to keep up with the localization technology.

Kind regards,

1 Like