Я столкнулся с проблемой перевода для данного источника;
<?php
$this->messageAdd($this->_("Ett okänt fel uppstod när %0 skulle skapas!", $term2), "error");
return $this->setResultCode(self::RESULT_ERROR);
?>
Если я не слепой, это совершенно нормальная строка, и у меня есть много похожих в других исходных файлах, но эта специфическая вызывает эти строки в po-файле;
#: ../../../../path/to/source_file.php:552
#, php-format
msgid "Ett okänt fel uppstod när %0 skulle skapas!"msgstr "An unknown error occurred while creating the %0!"
С ошибкой
Ошибка: «msgstr» не является допустимой строкой формата PHP, в отличие от «msgid». Причина: в директиве № 1 символ ‘w’ не является допустимым спецификатором диалога.
В чем проблема и почему только эта строка вызывает ошибку? Если я удаляю строку из исходного файла, в poedit не генерируются ошибки.
Правка № 1; я нашел Эта проблема после дальнейших исследований и обнаружил, что добавив комментарий /* xgettext:no-php-format */
до перевода строки в исходном файле исправлена проблема. Было бы хорошо, хотя бы знать, почему это происходит только с указанной строкой, а не с любой другой из моих строк 5k +.
Удалить
#, php-format
директива от вашего .po
файлы.
Других решений пока нет …