-------[ start of inserted text ]-------------------------------~-> /tmp/phpCP9u7Q:421: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. /tmp/phpCP9u7Q:432: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. /tmp/phpCP9u7Q:442: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. /tmp/phpCP9u7Q:447: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier./usr/bin/msgfmt: found 4 fatal errors -------[ end of inserted text ]---------------------------------~->
And parts with problematic msgid lines are:
-------[ start of inserted text ]-------------------------------~-> 421: #: src/dialogs/clonetiler.cpp:1036 #, c-format msgid "Horizontal shift per each row (in % of tile width)" msgstr "Водоравни померај за сваки ред (у % ширине објекта)"
432: #: src/dialogs/clonetiler.cpp:1041 #, c-format msgid "Vertical shift per each row (in % of tile height)" msgstr "Усправни померај за сваки ред (у % висине објекта)"
445: #: src/dialogs/clonetiler.cpp:1062 #, c-format msgid "Vertical shift per each column (in % of tile height)" msgstr "Усправни померај за сваку колону (у % висине објекта)"
447: #: src/dialogs/clonetiler.cpp:1062 #, c-format msgid "Vertical shift per each column (in % of tile height)" msgstr "Усправни померај за сваку колону (у % висине објекта)" -------[ end of inserted text ]---------------------------------~->
So, we need fixed .pot for valid gettext catalog. There is a part of gettext manual that saying about that:
-------[ start of inserted text ]-------------------------------~-> The careful reader now might say that this again can cause problems. The heuristic might guess it wrong. This is true and therefore `xgettext' knows about a special kind of comment which lets the programmer take over the decision. If in the same line as or the immediately preceding line to the `gettext' keyword the `xgettext' program finds a comment containing the words `xgettext:c-format', it will mark the string in any case with the `c-format' flag. This kind of comment should be used when `xgettext' does not recognize the string as a format string but it really is one and it should be tested. Please note that when the comment is in the same line as the `gettext' keyword, it must be before the string to be translated.
[strip]
`xgettext' of course could make a wrong decision the other way round, i.e. a string marked as a format string actually is not a format string. In this case the `msgfmt' might give too many warnings and would prevent translating the `.po' file. The method to prevent this wrong decision is similar to the one used above, only the comment to use must contain the string `xgettext:no-c-format'. -------[ end of inserted text ]---------------------------------~->
So what? Please fix "%" in msgids to some non c-format string.