Как проверить заполнители позиционной нотации в строках формата с помощью msgfmt?

При использовании printf-подобных строк формата в переведенном тексте msgfmt --check проверяет, что перевод все еще содержит заполнители. Например, бег xgettext по следующему коду

printf( gettext( "string: %s, int: %d" ), str, i )

производит .po файл с msgid помечены как c-format и чья ценность "string: %s, int: %d", Если переводчик забывает либо %s или же %d в переводе тогда msgfmt жалуется:

количество спецификаций формата в msgid и msgstr не совпадает

К сожалению, эта проверка не применяется к форматным строкам с использованием позиционной нотации, например

boost::format( gettext( "string: %1%, int %2%" ) ) % str % i

Как я могу проверить наличие местозаполнителей позиционной нотации в моих переводах?

4

Решение

Не прямой ответ, но, возможно, следующее решение может решить вашу проблему:

boost::format( gettext( "string: %1$s, int %2$d" ) ) % str % i;

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]